【发布时间】:2016-06-03 17:38:33
【问题描述】:
假设我有这些声明:
using fp_type = void(*)();
using fp2_type = void(*)() noexcept;
和
void func(){}
fp_type fp(func);
fp2_type(fp) 的演员阵容是否良好?反过来(将 noexcept 指定的函数指针转换为没有 noexcept 说明符的函数指针)?
【问题讨论】:
-
“反过来”很好,实际上是一种隐式转换。
fp2_type(fp)看起来应该是reinterpret_cast。 -
有趣的问题。注意:“15.4.12 异常规范不被视为函数类型的一部分”
-
实际上,这是在他们将异常规范作为类型系统的一部分之前还是之后(即,这是针对 C++1z 还是 C++14/earlier)?
-
我在这里问了一个关于 C++17 的非常相似的问题:stackoverflow.com/questions/57596276/…
标签: c++ function-pointers noexcept