Я знаю, что ссылка const продлевает жизнь временного локально. Теперь я спрашиваю себя, если это уместность может быть продлен на цепочке временных объектов, то есть, если я могу с уверенностью определить:Составляет ли константа срок службы временного объекта, возвращаемого временным объектом?
std::string const& foo = aBar.getTemporaryObject1().getTemporaryObject2();
У меня такое ощущение, что, так как первый метод aBar.getTemporaryObject1()
возвращает уже временный объект , уместность не выполняется для aBar.getTemporaryObject2()
.
Временное действие будет действительным во время выражения, в котором оно появляется. Тот факт, что он возвращает другое временное, не изменяет семантику. Вы все равно можете его захватить. – StoryTeller
@StoryTeller, но это не означает, что первый объект также будет гарантированно действительным в течение срока службы второго, не так ли? –
Нет, конечно нет. Если второй объект содержит ссылку на первую, это будет болтливая ссылка. – StoryTeller