可变参数模板和RValue引用

问题描述 投票:1回答:2

考虑以下C ++代码

template <class... Args>
void f (const int x, const int y, Args&&... args) {
  // Do something
}

据我了解,Args在这里可以是左值引用或右值引用,具体取决于编译时的类型推导。

因此,我应该能够使用-]调用该函数

float x = 40.0;
f<int, float, double>(10, 20, 30, x, 50.0);

这给我一个错误,说它不能将类型float的x转换为类型float&&

如何使用带有接受左值和右值引用的可变参数模板定义函数。

考虑下面的C ++代码模板void f(const int x,const int y,Args && ... args){//做点事}据我了解,这里的Args可能是左值...

c++ c++11 variadic-templates lvalue rvalue
2个回答
2
投票

据我了解,Args在这里可以是左值引用或右值引用,具体取决于编译时的类型推导。


3
投票

如果指定参数,则必须提供左值参考:

© www.soinside.com 2019 - 2024. All rights reserved.