Неверная инициализация неконстантной ссылки типа
В следующем коде я не могу передать временный объект в качестве аргументаprintAge
функция:
struct Person {
int age;
Person(int _age): age(_age) {}
};
void printAge(Person &person) {
cout << "Age: " << person.age << endl;
}
int main () {
Person p(50);
printAge(Person(50)); // fails!
printAge(p);
return 0;
}
Я получаю ошибку:
error: invalid initialization of non-const reference of type ‘Person&’ from an rvalue of type ‘Person’
Я понимаю, что это как-то связано с передачей lValue функции, ожидающей rValue ... Есть ли способ преобразовать мое lValue в rValue с помощью std :: move или чего-то еще? Я пытался принять постоянный параметр, но это не похоже на работу.