Расширяют ли ссылки на const в структурированных привязках время жизни разложенного объекта?

Делает записьconst auto& [a, b] = f(); гарантия продления срока службы возвращаемого объектаf()или хотя бы объектыa а такжеb связаны с? Читая черезпредложение Я не вижу в языке ничего очевидного, чтобы убедить меня в этом, если только это не покрыто чем-то другим. Тем не менее, следующее не продлевает время жизни временного, поэтому я не вижу, как это будет покрыто:

const auto& a = std::get<0>(f());

В верхней части бумаги, кажется, предполагается, что она покрыта

cv-квалификаторы и ref-квалификаторы объявления декомпозиции применяются к ссылке, введенной для инициализатора, а не для псевдонимов отдельных членов

Но в предложенной формулировке для фактического стандарта ниже приводится самое близкое упоминание, хотя я не уверен, как его прочитать, чтобы получить гарантию, которую я ищу:

если e - это не выраженное в скобках id-выражение с именем lvalue или ссылкой, введенной из списка идентификаторов объявления декомпозиции, decltype (e) является ссылочным типом, как указано в спецификации объявления декомпозиции.

Кажется, что gcc и clang продлевают время жизни возвращаемого объекта до конца области действия, основываясь наэксперимент с wandbox,уродливее реализация всех наворотов для моего собственного типа, кажется, продлевает время жизни внешнего объекта и других его членов данных.

Хотя авторы почти наверняка намерены, я хотел бы знать наверняка, что язык гарантирует, что это безопасно.

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

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