C ++ 11静态断言是否会失败,除非使用Clang ++进行检查?

乔蒂克

我正在尝试使用编译以下代码,clang++ -std=c++11 -c但失败:

void g() noexcept {}

template <typename Func>
void f(Func && func) noexcept(noexcept(func()))
{ static_assert(noexcept(func()), "func()"); } // No error!

void h() { f(&g); } // No error!

static_assert(noexcept(f(&g)), "Error!");

Clang 3.4.2给我的错误消息是:

test.h:9:1: error: static_assert failed "Error!"
static_assert(noexcept(f(&g)), "Error!");
^             ~~~~~~~~~~~~~~~

我在这里想念什么?

代词

noexcept 不是函数类型的一部分。

因此,&g这只是type的mill表达式的运行void(*)(),没有特殊的noexcept功能。所以,是g的,因为它衰变到函数指针。当最终调用这样的函数指针时,它没有noexcept规范,因此整个表达式都不是noexcept

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

是否可以“暂停”发送消息以进行检查?

是否可以进行检查集合存在的查询?

使用线程注释未按预期进行检查

在postgres SQL中使用OR进行检查约束

如何检查值是否在数组中并使用复选框进行检查

针对AD进行检查时,索引超出了c#范围

Scala:对yield进行检查,可能会返回一个空列表

多语言区域教堂:进行检查失败(GASNet:无效的节点数:-nl)

覆盖内存中的数据还是先读取以进行检查是否更好

If-Statement中的AND(&&)是否按输入顺序进行检查?

IntelliJ IDEA @SuppressWarnings,用于使用工具名称进行检查

在有2个数组进行检查或比较时使用javascript过滤

使用PHP在MySQL中安全存储密码,然后进行检查

如何使用正则表达式进行检查?

在Linux中使用Core Dump进行检查点/重新启动

Substring [整个单词]使用字符串变量进行检查

如果已配置 IP 地址,如何使用 Powershell 脚本进行检查

如何使用Google Test零或一个函数调用进行检查?

如何冻结dom树的状态(不使用js“ debugger”语句)进行检查?

使用带有多个分组的nvl2进行检查

使用python从JSON文件中解析数据并进行检查

Postgres,使用数字值定义常量(或函数)以进行检查约束比较

包函数中的单元测试和检查:我们是否同时进行检查?

Python 3.5.2:检查字符串中的字符形成一个列表,与使用!=进行检查不同

java优化nitpick:是否比在铸造前调用instanceof进行检查更快地投射某些东西并使其引发异常?

Hibernate:当收集元素需要使用like操作符进行检查时,如何防止SQL注入?

Wagtail:我可以使用API来获取页面的只读草稿以进行检查吗?

如果我使用两个alloc_pages进行检查,则alloc_pages返回的地址相同

如果使用 formGroup Angular2 进行检查,如何在屏幕上显示复选框值