¿Las referencias constantes en enlaces estructurados extienden la vida útil del objeto descompuesto?

Hace la escrituraconst auto& [a, b] = f(); garantía de extender la vida útil del objeto devuelto desdef(), o al menos los objetosa yb ¿están obligados a? Leyendo a través dela propuesta No veo nada obvio en el lenguaje para asegurarme de que lo haga, a menos que esté cubierto por otra cosa. Sin embargo, lo siguiente no extiende la vida útil de lo temporal, por lo que no veo cómo se cubriría:

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

En la parte superior del documento parece sugerir que está cubierto

los calificadores cv y el calificador ref de la declaración de descomposición se aplican a la referencia introducida para el inicializador, no para los alias de miembros individuales

Pero en la redacción propuesta para el estándar real, la mención más cercana que veo está a continuación, aunque no estoy seguro de cómo leerlo para obtener la garantía que estoy buscando:

si e es una expresión id sin paréntesis nombrando un valor o referencia introducido desde la lista de identificadores de una declaración de descomposición, decltype (e) es el tipo referenciado como se indica en la especificación de la declaración de descomposición

Parece que gcc y clang extienden la vida útil del objeto devuelto hasta el final del alcance basado en unexperimento de caja de varitas. Ununo más feo implementar todas las campanas y silbatos para mi propio tipo parece extender la vida útil del objeto externo y sus otros miembros de datos.

Aunque casi con certeza las intenciones de los autores, me gustaría saber con certeza que el lenguaje garantiza que esto sea seguro.

Respuestas a la pregunta(1)

Su respuesta a la pregunta