私は条件付きnoexcept
の使い方を学び、この問題に遭遇します。私はクラスがあるとします。noexceptの式と型の特性
template<typename T>
class Wrapper {
public:
Wrapper(T&& value) noexcept(/* ??? */)
: value_(std::move(value))
{}
private:
T value_;
};
/* ??? */
の部分については、私は私がthisにつまずいまで我々は、noexcept(T(std::move(value)))
またはstd::is_nothrow_move_constructible<T>::value
のいずれかを使用することができると思いました。私はnoexcept(noexcept(T(std::move(value))))
を使用する場合
だから、厳密に言えば、私は「このコンストラクタはを構築し、T
あるnoexcept
破壊場合に限っnoexcept
である」とすることを言っていますか?
スローするデストラクタは、火をつけて焼くべきですが。
'noexcept(新しいT(std :: move(value)))'またはsometing?それは実際には何も割り当てられていないので、それは具体的に "漏れ"とdtorは関与すべきではありません...私はあなたが新しいのノースローバージョンを使用する必要がありますね、 'std :: bad_alloc'を検出したい。 –