繁体   English   中英

有没有办法将变量传递给 std::make_tuple<double, char, std::string> (变量 1,变量 2)?</double,>

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM