c – 我如何说“如果执行受保护的基础构造函数是noexcept”,noexcept?

前端之家收集整理的这篇文章主要介绍了c – 我如何说“如果执行受保护的基础构造函数是noexcept”,noexcept?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们有这种情况,想知道如何解决这个问题
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

猜你在找的C&C++相关文章