函数typedef中是否接受了noexcept说明符?
如:
typedef void (*fptr)() noexcept;
直观地说,noexcept说明符似乎有意义,因为它们允许在调用者方面进行一些优化。
我从gcc 4.6.1得到了一个混合的答案。
typedef void (*fptr)() noexcept;
导致: 错误:使用异常规范声明的'fptr'
但:
template<void (*FPtr)() noexcept>
struct A{};
在没有警告的情况下编译。
答案 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 。