我知道某个对象仅作为临时对象创建(它是库中的私有成员对象)。有时,通过将成员函数链接在一起()进一步初始化该对象TempObj().Init("param").Init("other param")
。我想使用该临时实例为另一个对象启用移动构造,所以我想知道关于return std::move(*this)
.
struct TempObj
{
TempObj &&Member() { /* do stuff */ return std::move(*this); }
};
struct Foo
{
Foo(TempObj &&obj);
};
// typical usage:
Foo foo(TempObj().Member());
它在功能上等同于这个吗?
struct TempObj
{
TempObj(TempObj &&other);
TempObj Member() { /* do stuff */ return *this; }
};
Foo foo(TempObj().Member());