関数に unique_ptr の参照を渡すのは悪い使い方ですか?
void Foo(std::unique_ptr<T>& rT)
{
...
}
void Foo(std::unique_ptr<T>& rT)
2つのことを意味します:
Foo(std::unique_ptr<T>(new T));
これは非定数左辺値参照であるため、次のような関数を呼び出すことはできません。これにより、左辺値のみを受け入れるように関数が制限されます。
左辺値を渡すと、それがどうなるかわかりませんFoo(myunique_ptr);
。このような呼び出しFoo
では、の所有権を主張するかどうかはわかりませんstd::unique_ptr
。呼び出し元が内部で何が起こっているかを認識してFoo
おらず、関数のシグネチャから明確でない場合、これは危険な場合があります。
上記を考慮した上で、使用法が悪いかどうかを判断できます。