我正在使用 C++14 模式下的 GCC 5.2 和 clang 3.6 进行测试,它们给出了相同的输出。
对于以下代码
#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
规范如何可能影响移动构造函数的规范?