我有以下情况,我需要从 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;
}