Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何将数组传递给std::make_tuple?_Arrays_C++11_Tuples_Initializer List - Fatal编程技术网

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

Arrays 如何将数组传递给std::make_tuple?,arrays,c++11,tuples,initializer-list,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 f() { 返回std::make_tuple(0.,{1,2}); } int main() { f(); 返回0; } 无法将“std::make_tupl

如何做到这一点:

#include <tuple>

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

int main()
{
    f();
    return 0;
}
#包括
std::tuple f()
{
返回std::make_tuple(0.,{1,2});
}
int main()
{
f();
返回0;
}
无法将“std::make_tuple()”从“std::tuple”转换为“std::tuple”


编译器不知道该做什么吗?

我想这是不可能的。读这个

相反,您可以选择如下方式传递向量:

std::tuple<double, vector<int>> t = std::make_tuple(0.0, vector<int>{1,3});
std::tuple t=std::make_tuple(0.0,向量{1,3});

如果需要使用“编译时向量”,请尝试

#包括
// ...
std::tuple f(){
返回std::make_tuple(0,std::array{1,2});
}
作为聚合类型,可以使用 聚合初始化最多提供N个 可转换为T

@Piotr Skotnicki,这个“int指针”的例子让我甚至用
sizeof
验证
int[2]
不会退化为元组中的庞特。无论如何,对于实际应用,我将使用MyTuple=std::tuple;
。。。返回MyTuple(0.,{1,2})
#include <array>
// ...

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