C++;具有用于左值和右值的引用参数的函数 我想有一个C++函数,它采用一个参数,这是一个引用,它对于LVals[1]和rVals+相同的语法都适用。

C++;具有用于左值和右值的引用参数的函数 我想有一个C++函数,它采用一个参数,这是一个引用,它对于LVals[1]和rVals+相同的语法都适用。,c++,function,reference,rvalue,lvalue,C++,Function,Reference,Rvalue,Lvalue,举个例子: #include <iostream> using namespace std; void triple_lvalue(int &n) { n *= 3; cout << "Inside function: " << n << endl; } void triple_rvalue(int &&n) { n *= 3; cout << "Inside function: " <

举个例子:

#include <iostream>
using namespace std;

void triple_lvalue(int &n) {
  n *= 3;
  cout << "Inside function: " << n << endl;
}

void triple_rvalue(int &&n) {
  n *= 3;
  cout << "Inside function: " << n << endl;
}

int main() {
  int n = 3;
  triple_lvalue(n);
  cout << "Outside function: " << n << endl;
  triple_rvalue(5);
}
这个代码有效。但是对于我的情况,我需要两个不同的函数,第一个是传递
n
(左值)和
3
(右值)。我希望我的函数的语法能够很好地处理这两个问题,而不需要重复任何代码

谢谢大家!

这就是我们应该做的。它可以与左值和右值一起使用,并保留函数参数的值类别

转发引用是一种特殊类型的引用,可以保留 函数参数的值类别,使 通过电子邮件转发

e、 g

模板
无效三次_值(T&&n){
n*=3;

请注意,在实际场景中,您可能需要在该函数的某个位置使用
std::forward
Inside function: 9
Outside function: 9
Inside function: 15
template <typename T>
void triple_value(T &&n) {
  n *= 3;
  cout << "Inside function: " << n << endl;
}