【发布时间】:2018-03-28 13:59:40
【问题描述】:
使用 gcc 7.1.0 std::mem_fn 能够检测成员函数指针上的 noexcept-ness。它是如何做到的?我认为noexcept 说明符不是函数类型的一部分?
更令人困惑的是,当我从https://wandbox.org/permlink/JUI3rsLjKRoPArAl 中删除一种方法上的 noexcept 说明符时,所有 noexcept 值都会发生变化,如此处https://wandbox.org/permlink/yBJ0R4PxzAXg09ef 所示。当一个是 noexcept 时,所有都是 noexcept。如何?这是一个错误吗?
【问题讨论】:
-
(顺便说一句,
noexcept是 C++17中函数类型的一部分。) -
@KerrekSB 但 cppreference 说它不在这里 en.cppreference.com/w/cpp/language/noexcept_spec?
-
它说它不是直到 C++17类型的一部分。如果您在阅读时遇到问题,我无法帮助您。 >_>(我已经将“如何”编辑到之前的评论中。)
-
对于
c++14和c++1z一致性模式,您的示例代码在GCC 7.2 中的行为有所不同。关于 C++14 的问题还是很有趣的! -
@Curious :在实际调查之后,我发现我错了。对造成的噪音和任何混乱表示歉意;我已经删除了误导性的 cmets。 (编辑:直到现在我才看到乔恩已经回答了你的问题。:-P)