C++ 获取参数所有权的成员

C++ 获取参数所有权的成员,c++,constructor,c++11,move-semantics,ownership,C++,Constructor,C++11,Move Semantics,Ownership,对于成员获取参数所有权的问题,我认为有两种合理的解决方案: Foo::Foo(std::unique_ptr<int> parameter) : member(std::move(parameter)) { } Bar::Bar(std::unique_ptr<int> parameter) { member.swap(parameter); } Foo::Foo(std::unique_ptr参数) :成员(标准::移动(参数)) { } Bar::Bar(

对于成员获取参数所有权的问题,我认为有两种合理的解决方案:

Foo::Foo(std::unique_ptr<int> parameter)
: member(std::move(parameter))
{
}

Bar::Bar(std::unique_ptr<int> parameter)
{
    member.swap(parameter);
}
Foo::Foo(std::unique_ptr参数)
:成员(标准::移动(参数))
{
}
Bar::Bar(标准::唯一的\u ptr参数)
{
成员交换(参数);
}
以下哪一项更为惯用、更易于理解、更易于调试、更易于维护等


对于我错过的问题,是否有其他解决方案?

始终支持初始值设定项列表。此外,它还涵盖了可以移动但不能交换的类型,例如,或者可能必须为默认构造执行昂贵操作的类型,或者实际上是无法默认构造的类型