模板函数重载

Function overloading with template

我有以下代码。

#include <iostream>
using namespace std;


void print(int& number){
    cout<<"\nIn Lvalue\n";
}

void print(int&& number){
    cout<<"\nIn Rvalue\n";
}

int main(int argc,char** argv){

    int n=10;
    print(n);
    print(20);
}

它工作正常。但我想制作一个函数模板,以便它接受左值和右值。谁能建议怎么做?

除非您想更改输入参数,否则 const 左值引用将完成这项工作,因为右值引用可以绑定到 const 左值引用:

void print(int const &number) {
    ...
}

LIVE DEMO

尽管如此,您可以:

template<typename T>
void print(T &&number) {
    ...
}

LIVE DEMO