Я тестировал GCC 5.2 и clang 3.6, оба в режиме С++ 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
оператора присваивания перемещения повлиять на конструктор перемещения?