Перегрузка функции с шаблоном

У меня есть следующий код.

#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) {
    ...
}

LIVE DEMO

Тем не менее, вы можете просто:

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

LIVE DEMO

Другие вопросы по тегам