Неверная инициализация неконстантной ссылки типа

В следующем коде я не могу передать временный объект в качестве аргумента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 или чего-то еще? Я пытался принять постоянный параметр, но это не похоже на работу.

Ответы на вопрос(3)

Ваш ответ на вопрос