std::unique_ptr
を、std::unique_ptr
が所有するデータの所有権を取得するクラスのコンストラクタに渡したいとします。所有者を取得するためにstd :: unique_ptrをコンストラクタに渡す
以下のアプローチfoo
とbar
との間に、コンパイラがそれらを処理する方法の点で違いがありますか?
foo
クラス:
template <class T>
class foo
{
std::unique_ptr<T> data_;
public:
foo(std::unique_ptr<T>&& data) :
data_{ std::forward<std::unique_ptr<T>>(data) }
{
}
};
bar
クラス:
template <class T>
class bar
{
std::unique_ptr<T> data_;
public:
bar(std::unique_ptr<T> data) :
data_{ std::move(data) }
{
}
};
もう1つは機能しますか? – 101010
あなたのチームが後者によってあまり混乱しないようにして、それを説明する時間を無駄にするのではなく、後者を使用してください。 –
@KerrekSBはOPのチームに混乱して時間を無駄にしたのですか? – Slava