【发布时间】:2016-09-02 17:06:45
【问题描述】:
我有一个需要初始化元组的要求,如下所示。如何创建包含 A 类对象的元组?
#include <iostream>
#include <tuple>
using namespace std;
class A{
int a;
public:
A(const A&)=delete;
A(int a): a(a){}
};
std::tuple<A>& createTuple(A &&a){
return std::make_tuple<A>(std::forward<A>(a));
}
int main(){
std::cout << std::get<0>(createTuple(std::forward<A>(A(1))));
}
我无法以任何方式修改 A 类。
【问题讨论】:
-
您实际上想做什么,您的实际限制是什么?我的意思是,在这种情况下,我们可能可以从您的代码中推断/猜测它,但您应该使用 words 来解释它,以便该问题可搜索、可重复使用且清晰。
-
std::forward不会像您认为的那样工作。在您的情况下,您在任何地方都不需要std::forward。 -
也在
createTuple中尝试返回对临时对象的左值引用。我
标签: c++ tuples tuple-packing