我有一个包含元组数组的类,如下所示:

template<size_t __v, typename ... __tz>
class turray{
public:
    std::tuple<__tz ...> array[__v];
};
它没有任何用户定义的构造函数,我想知道如何初始化它。
请考虑以下方法:
int main(){
    turray<2, int, float> mturray0{std::tuple<int, float>{1, 1.1}, std::tuple<int, float>{2, 2.2}}; //works but is very big
    turray<2, int, float> mturray1{{1, 1.1}, {2, 2.2}};// causes error
}
第一种方法有效,但很大,不希望使用。第二种方法导致以下错误:
error: too many initializers for ‘turray<2, int, float>’
  227 |  turray<2, int, float> mturray1{{1, 1.1}, {2, 2.2}};
      |                                                   ^
如果有人可以告诉我什么是正确的方法,我将不胜感激。

最佳答案

您只需要添加另一对括号:

turray<2, int, float> mturray1 { { {1, 1.1}, {2, 2.2} } };
//                                 ^      ^                tuple
//                               ^                    ^    array
//                             ^                        ^  turray
这是demo

10-07 15:21