¿Cuáles son los casos de uso para enlaces estructurados?

El estándar C ++ 17 presenta un nuevoenlaces estructurados característica, que fue inicialmentepropuesto en 2015 y cuya apariencia sintáctica fue ampliamentediscutido más tarde.

Algunos usos para ellos vienen a la mente tan pronto como revisa la documentación.

Descomposición de agregados

Declaremos una tupla:

std::tuple<int, std::string> t(42, "foo");

Las copias con nombre de elemento pueden obtenerse fácilmente con enlaces estructurados en una línea:

auto [i, s] = t;

que es equivalente a:

auto i = std::get<0>(t);
auto s = std::get<1>(t);

o

int i;
std::string s;
std::tie(i, s) = t;

Las referencias a elementos de tupla también se pueden obtener sin dolor:

auto& [ir, sr] = t;
const auto& [icr, scr] = t;

Entonces, podemos hacerlo con matrices o estructuras / clases cuyos miembros son públicos.

Múltiples valores de retorno

Una forma conveniente de obtener múltiples valores de retorno de una función se deduce inmediatamente de lo anterior.

¿Qué más?

¿Puede proporcionar otros casos de uso, posiblemente menos obvios, para enlaces estructurados? ¿De qué otra manera pueden mejorar la legibilidad o incluso el rendimiento del código C ++?

Notas

Como se mencionó en los comentarios, la implementación actual de enlaces estructurados carece de algunas características. No son variables y su sintaxis no permite omitir miembros agregados explícitamente.aquí Uno puede encontrar una discusión sobre la variadicidad.

Respuestas a la pregunta(3)

Su respuesta a la pregunta