cppref говорит: Rvalue references can be used to extend the lifetimes of temporary objects
Вы упускаете важную часть этой цитаты. Более точная цитата: «Rvalue ссылки могут использоваться для продления времени жизни временных объектов» .
Заметили разницу? (Не беспокойтесь слишком сильно, если это не так, потому что это не так заметно.) Существует ссылка на объяснение того, как и когда можно продлить срок службы временного. Вы пометили этот вопрос C ++ 11, поэтому пункт с маркером, действительный до C ++ 14, применяется:
- временная привязка к элементу ссылки в списке инициализатора конструктора сохраняется только до выхода из конструктора, а не до тех пор, пока объект существует. (примечание: по состоянию на 1696 год такая инициализация неверна).
Вы связали временный элемент со ссылкой в списке инициализатора конструктора. Срок службы временного не распространяется за пределы конца конструктора. Временный уничтожается до вызова деструктора вашего объекта.
Как заставить его жить дольше? Это сложно, но если параметр всегда является временным, вы можете сделать ваш элемент не ссылочным и move
параметр для члена. Если вам нужна большая гибкость, вам может потребоваться некоторое копирование.