Перегрузка функции с шаблоном
У меня есть следующий код.
#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);
}
Работает нормально. Но я хочу сделать шаблон функции так, чтобы он принимал как lvalues, так и rvalue. Кто-нибудь может подсказать, как это сделать?
1 ответ
Решение
Если вы не хотите изменить входной аргумент const
Ссылка lvalue сделает работу, потому что ссылки rvalue могут связываться с const
lvalue ссылки:
void print(int const &number) {
...
}
Тем не менее, вы можете просто:
template<typename T>
void print(T &&number) {
...
}