【发布时间】:2013-05-20 15:55:10
【问题描述】:
我有以下情况,我需要从 t1 移动构造 t2。
不幸的是,这是不可能的(我想是违反常数的)
从 foo 的调用者透明地处理该问题的正确方法是什么? (即,不需要按值传递和显式 std::move)
struct T
{
T() = default;
~T() = default;
T(T&&) = default;
};
T foo(const T& t)
{
T t3;
if (predicate)
return t3;
else
return std::move(t);
}
int main()
{
T t1;
T t2 = foo(t1);
return 0;
}
【问题讨论】:
-
如果你需要从
t1移动-构造t2,你为什么不做T t2{std::move(t1)}? -
foo的目的是什么? -
查看更新以获取更具体的示例
-
@3XX0:那么,如果你想离开它,为什么要引用
const?取一个T&&,让调用者做foo(std::move(t1))
标签: c++ c++11 move move-semantics