向量的移动构造函数的规范是(从标准中复制出来的):
vector(vector&&);
注意缺少noexcept
. 但是 gcc 4.8 和 Clang 3.2 都报告std::is_nothrow_move_constructible<std::vector<int>>::value
返回 true(即 1):
#include<vector>
#include<iostream>
int main()
{
std::cout << std::is_nothrow_move_constructible<std::vector<int>>::value << '\n';
}
造成这种明显差异的原因是什么?