如果执行受保护的基础构造函数是noexcept,我该怎么说“noexcept”?

时间:2016-08-04 16:02:11

标签: c++ c++11 inheritance protected noexcept

我们有这种情况,并想知道解决它的最佳方法

template<typename T>
struct A : T {
  A(T &&t) noexcept(noexcept(T(std::move(t))))
     :T(std::move(t))
  { }
};

这很遗憾无法编译,因为T的移动构造函数受到保护,我们只允许在*this的构造函数初始化列表中调用它。有什么办法使这项工作或甚至有一个标准的方法呢?

1 个答案:

答案 0 :(得分:1)

您正在寻找noexcept(std::is_nothrow_move_constructible<T>::value)http://en.cppreference.com/w/cpp/types/is_move_constructible