После некоторых экспериментов мне удалось написать фрагмент кода, который будет проверять, является ли конструктор перемещения класса noexcept (без использования type_traits; это просто упражнение):
std::cout << std::boolalpha << noexcept(Widget(std::declval<Widget>())) << std::endl;
Функция declval "возвращает" Widget&&, поэтому все выражение представляет собой вызов конструктора перемещения. Но как добиться чего-то подобного для конструктора копирования?
*static_cast<Widget>(nullptr)
- person Walter   schedule 09.04.2015