J'apprends à utiliser le conditionnel noexcept
et je suis tombé sur ce problème. Supposons que j'ai une classe :
template<typename T>
class Wrapper {
public:
Wrapper(T&& value) noexcept(/* ??? */)
: value_(std::move(value))
{}
private:
T value_;
};
Pour le /* ??? */
je pensais que nous pouvions utiliser soit noexcept(T(std::move(value)))
o std::is_nothrow_move_constructible<T>::value
jusqu'à ce que je tombe sur este .
Donc si j'utilise noexcept(noexcept(T(std::move(value))))
à proprement parler, je dis que "ce constructeur est noexcept
si l'on construit et en détruisant a T
es noexcept
" ?
Bien que les destructeurs qui lancent devraient être mis sur le feu et brûlés.