gpt4 book ai didi

c++ - 如何根据 is_nothrow_move_constructible 声明包装类型 X noexcept 的移动构造函数?

转载 作者:可可西里 更新时间:2023-11-01 16:36:45 27 4
gpt4 key购买 nike

假设我有一个包装类型

template <typename T>
struct X {/*..*/};

而且我不能只是 X(X&&) = default 因为我必须在那里做一些重要的事情。

但是,我希望它是 noexcept 但前提是 T(T&&)noexcept。这可以使用 ::std::is_nothrow_move_constructible 进行测试。

我不知道如何根据 constexpr 有条件地启用构造函数的一个版本或另一个版本。我想可能有一种使用 SFINAE 的方法,但我不知道如何将其应用于 ctors。

最佳答案

noexcept 说明符接受任何 bool 常量表达式,因此您可以直接检查类型特征:

template <typename T>
struct X {
X(X&&) noexcept(std::is_nothrow_move_constructible<T>::value) {}
};

关于c++ - 如何根据 is_nothrow_move_constructible<T> 声明包装类型 X<T> noexcept 的移动构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40786604/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com