我们有这种情况,想知道如何解决这个问题
- 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