【发布时间】:2016-01-08 12:59:34
【问题描述】:
我正在使用 GCC 5.2 和 clang 3.6 进行测试,两者都在 C++14 模式下,它们给出了相同的输出。
如下代码
#include <iostream>
#include <type_traits>
struct S {
// S& operator= (S&&) noexcept { return *this; }
};
int main() {
std::cout << std::is_nothrow_move_constructible<S>::value
<< std::is_nothrow_move_assignable<S>::value;
}
得到11的结果。但如果取消注释移动赋值运算符,输出变为01。移动赋值运算符的显式 noexcept 规范如何可能影响移动构造函数的规范?
【问题讨论】:
标签: c++ exception language-lawyer c++14 noexcept