我想把变量名传递给std::make_tuple(),但是它不允许。我使用的是C++14,有什么方法可以达到我的目的吗?
std::tuple<int> get_student(int id) { int gpa = 3; return std::make_tuple<int>(gpa); }
这将抛出一个错误,指出“无法将类型为”int&&“的右值引用绑定到类型为”int“的左值”
kuuvgm7e1#
我想把变量名传递给std::make_tuple()我想你真正想要的是返回一个std::tuple<int>,而不需要make_tuple:
std::tuple<int>
make_tuple
std::tuple<int> get_student(int id) { int gpa = 3; return gpa; }
make_tuple用于从传递给元组构造函数的参数推导元组的类型,例如
auto get_student(int id) { int gpa = 3; return std::make_tuple(gpa); }
当你从一些变量推导出元组类型时,你不需要指定模板参数。如果你确实想指定参数(而不是让它们被推导出来),你也不需要std::make_tuple:
std::make_tuple
auto get_student(int id) { int gpa = 3; return std::tuple<int>(gpa); }
实际上,make_函数家族都是为了从它们的参数中推导出某种类型,在某些情况下,我们需要为make_tuple指定参数,但这种情况并不常见。此外,自从C++17就有了CTAD(类模板参数演绎),这使得make_...的许多用法过时了。我在这里看到的代码中的大多数用法实际上只是unnecessary。
make_
make_...
1条答案
按热度按时间kuuvgm7e1#
我想把变量名传递给std::make_tuple()
我想你真正想要的是返回一个
std::tuple<int>
,而不需要make_tuple
:make_tuple
用于从传递给元组构造函数的参数推导元组的类型,例如当你从一些变量推导出元组类型时,你不需要指定模板参数。
如果你确实想指定参数(而不是让它们被推导出来),你也不需要
std::make_tuple
:实际上,
make_
函数家族都是为了从它们的参数中推导出某种类型,在某些情况下,我们需要为make_tuple
指定参数,但这种情况并不常见。此外,自从C++17就有了CTAD(类模板参数演绎),这使得
make_...
的许多用法过时了。我在这里看到的代码中的大多数用法实际上只是unnecessary。