如何将数组传递给std :: make_tuple?

时间:2016-12-12 14:14:52

标签: arrays c++11 tuples initializer-list

如何做到这一点:

#include <tuple>

std::tuple<double, int[2]> f()
{
    return std::make_tuple(0., {1, 2});
}

int main()
{
    f();
    return 0;
}
  

无法从'std :: tuple&lt;&gt;'转换'std :: make_tuple&lt; {}&gt;()'到'std :: tuple'

编译器无法弄清楚要做什么?

2 个答案:

答案 0 :(得分:4)

如果您需要使用&#34;编译时矢量&#34;,请尝试array

#include <array>
// ...

std::tuple<double, std::array<int, 2>> f() {
  return std::make_tuple(0., std::array<int, 2>{1, 2});
}
  

作为聚合类型,可以使用它进行初始化   最多给出N个初始化器的聚合初始化   可转换为T。

答案 1 :(得分:1)

我想这是不可能的。阅读此Initializing std::tuple from initializer list

相反,您可以选择像这样传递 向量

y