我们有这种情况,想知道如何解决这个问题
template<typename T> struct A : T { A(T &&t) noexcept(noexcept(T(std::move(t)))) :T(std::move(t)) { } };
不幸的是,由于T的move构造函数被保护,所以不能编译,我们只允许在* this的构造函数初始化列表中调用它.使这项工作或甚至有一个标准的方法是什么的解决方法?
解决方法
你正在寻找noexcept(std :: is_nothrow_move_constructible< T> :: value):
http://en.cppreference.com/w/cpp/types/is_move_constructible
http://en.cppreference.com/w/cpp/types/is_move_constructible