[英]Is there a way to pass variables to std::make_tuple<double, char, std::string>(var1, var2)?
我想将变量名传递给 std::make_tuple(),但它不允许。 我正在使用 C++14,有没有办法实现我想要的?
std::tuple<int> get_student(int id)
{
int gpa = 3;
return std::make_tuple<int>(gpa);
}
这会抛出一条错误消息“无法将‘int&&’类型的右值引用绑定到‘int’类型的左值”
我想将变量名传递给 std::make_tuple()
我想你真正想要的是返回一个std::tuple<int>
。 不需要make_tuple
:
std::tuple<int> get_student(int id)
{
int gpa = 3;
return gpa;
}
make_tuple
用于从传递给其构造函数的 arguments 中推导出元组的类型,例如
auto get_student(int id)
{
int gpa = 3;
return std::make_tuple(gpa);
}
当您从某些变量推导元组类型时,您没有指定模板 arguments。
如果您确实想指定 arguments(而不是让它们被推导),您也不需要std::make_tuple
:
auto get_student(int id)
{
int gpa = 3;
return std::tuple<int>(gpa);
}
实际上,整个make_
函数家族的目的都是从它们的 arguments 中推导出某种类型。在某些情况下,人们想为make_tuple
指定参数,但这种情况并不常见。
此外,自 C++17 以来,存在CTAD (类模板参数推导),这使得make_...
的许多用途已过时。 我在此处的代码中看到的大多数用途实际上都是不必要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.