#include #include #include using namespace std; class Foreign { public: Foreign() = default; Foreign(string const &) noexcept {} Foreign(Foreign const &other) noexcept { throw 1; } }; class String { public: String() = default; String(String &&tmp) {} }; template class MyClass { Type d_f; public: MyClass() = default; MyClass(MyClass &&tmp) : d_f(move(tmp.d_f)) {} }; int main() try { cout << "TRAIT: " << is_nothrow_copy_constructible::value << '\n'; MyClass s1{ move(MyClass{} ) }; MyClass s2{ move(MyClass{} ) }; } catch (...) { cout << "Exception\n"; }