C++ 在C+中返回一对时避免双移动+;

C++ 在C+中返回一对时避免双移动+;,c++,tuples,move-constructor,C++,Tuples,Move Constructor,我试图编写一个函数,返回一对对象,其中一个比另一个更难构造。这段代码接近于说明我正在尝试的内容: #包括 #包括 使用名称空间std; 结构A{ int i; A(A&&A):i(A.i){cout可用于避免额外移动构造函数: return {piecewise_construct, std::forward_as_tuple(move(a)), make_tuple(10)}; 因此,您使用了std::tuple而不是std::tuple(移动构造)。我可能必须在示例中指定a的构造过于简单

我试图编写一个函数,返回一对对象,其中一个比另一个更难构造。这段代码接近于说明我正在尝试的内容:

#包括
#包括
使用名称空间std;
结构A{
int i;
A(A&&A):i(A.i){cout可用于避免额外移动构造函数:

return {piecewise_construct, std::forward_as_tuple(move(a)), make_tuple(10)};


因此,您使用了
std::tuple
而不是
std::tuple
(移动构造)。

我可能必须在示例中指定
a
的构造过于简单。这实际上是一个相当复杂的过程,包括需要操作已构造的版本。
返回{move(a),10}有问题吗;
?如果你能更新问题以显示代码的行为比预期的更糟,那就太好了。哦,你正在使用
(U1&&,U2&&)
-构造函数,这应该也能工作。好主意!我想当
A
的构造函数接受多个参数时,这就开始崩溃了。。。
return {piecewise_construct, std::forward_as_tuple(move(a)), make_tuple(10)};