函数typedef中的noexcept说明符

时间:2011-10-26 14:03:04

标签: c++ function-pointers c++11 noexcept

函数typedef中是否接受了noexcept说明符?

如:

 typedef void (*fptr)()  noexcept;

直观地说,noexcept说明符似乎有意义,因为它们允许在调用者方面进行一些优化。

我从gcc 4.6.1得到了一个混合的答案。

 typedef void (*fptr)()  noexcept;

导致:     错误:使用异常规范声明的'fptr'

但:

template<void (*FPtr)()  noexcept>
struct A{};

在没有警告的情况下编译。

1 个答案:

答案 0 :(得分:8)

clang给出:

test.cpp:1:25: error: exception specifications are not allowed in typedefs
typedef void (*fptr)()  noexcept;
                        ^
1 error generated.

这在15.4 [except.spec] / p2:

中的C ++ 11标准中备份
  

... 异常规范不应出现在typedef声明中   或 alias-declaration