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});
}