LINUX.ORG.RU

История изменений

Исправление KennyMinigun, (текущая версия) :

т.е. объекту стоило бы уничтожиться после двоеточия.

Всмысле после ; строчке

S &&r = (S &&) S{};
?

запустив тест получается, что объект переживает cout,

Ссылка «продлевает» жизнь обьекта в рамках scope.

https://en.cppreference.com/w/cpp/language/lifetime

The lifetime of a temporary object may be extended by binding to a const lvalue reference or to an rvalue reference (since C++11), see reference initialization for details.

Исходная версия KennyMinigun, :

т.е. объекту стоило бы уничтожиться после двоеточия.

Всмысле после ; строчке

S &&r = (S &&) S{};

запустив тест получается, что объект переживает cout,

Ссылка «продлевает» жизнь обьекта в рамках scope.

https://en.cppreference.com/w/cpp/language/lifetime

The lifetime of a temporary object may be extended by binding to a const lvalue reference or to an rvalue reference (since C++11), see reference initialization for details.