mir*_*irk 15 c++ function-pointers noexcept c++11
函数typedef中是否接受noexcept说明符?
如:
typedef void (*fptr)() noexcept;
Run Code Online (Sandbox Code Playgroud)
直觉上,noexcept说明符似乎有意义,因为它们允许在调用者方面进行一些优化.
我从gcc 4.6.1得到了一个复杂的答案.
typedef void (*fptr)() noexcept;
Run Code Online (Sandbox Code Playgroud)
导致:错误:使用异常规范声明'fptr'
但:
template<void (*FPtr)() noexcept>
struct A{};
Run Code Online (Sandbox Code Playgroud)
编译时没有警告.
clang给出:
test.cpp:1:25: error: exception specifications are not allowed in typedefs
typedef void (*fptr)() noexcept;
^
1 error generated.
Run Code Online (Sandbox Code Playgroud)
这在15.4 [except.spec]/p2中的C++ 11标准中备份:
... 异常规范不应出现在typedef声明或alias-declaration中.
| 归档时间: |
|
| 查看次数: |
1317 次 |
| 最近记录: |