関数に 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おらず、関数のシグネチャから明確でない場合、これは危険な場合があります。
上記を考慮した上で、使用法が悪いかどうかを判断できます。