The specification for vector's move constructor is (copied out of the standard):
vector(vector&&); Notice the lack of noexcept. But both gcc 4.8 and Clang 3.2 report that std::is_nothrow_move_constructible<std::vector<int>>::value returns true (i.e, 1):
#include<vector> #include<iostream> int main() { std::cout << std::is_nothrow_move_constructible<std::vector<int>>::value << '\n'; } What is the cause of this apparent discrepancy?