【发布时间】:2019-06-15 19:17:17
【问题描述】:
我有一个像这样定义的变量
auto drum = std::make_tuple
( std::make_tuple
( 0.3f
, ExampleClass
, [](ExampleClass& instance) {return instance.eGetter ();}
)
);
我希望drum 是一个元组的元组。 (即((a, b, c)))。
我还有一个像这样定义的变量
auto base = std::make_tuple
( 0.48f
, ExampleClass
, [](ExampleClass& instance) {return instance.eGetter ();}
);
我希望它只是三个元素的元组(即(a, b, c))
我还有一个向量定义如下
std::vector<std::tuple<std::tuple< float
, ExampleClass
, std::function<float (ExampleClass&)>
>>> listOfInstruments;
现在,如果我将 drum 添加到 listOfInstruments,我预计不会出现错误。
listOfInstruments.push_back(drum); 确实是这种情况
我预计会出现错误listOfInstuments.push_back(base);,但代码编译得很好。
由于listOfInstruments 的类型为'tuple of tuples',不应该只添加'tuple'会导致一些错误吗?除非() 和(()) 都被std::vector 视为相同类型。还是我完全错了,这里还有其他事情在起作用?
似乎无法弄清楚。
【问题讨论】:
-
顺便说一句,我强烈建议您不要声明一个元素的
std::tuple,而是使用元素类型。