El enlace estructurado es una innovación sintáctica del estándar del lenguaje de programación C++17 [ 1 ] , diseñado para desempaquetar tipos de datos no estáticos complejos y representarlos como una composición de sus elementos constituyentes [2] [3] .
El enlace estructural es una de las nuevas opciones para declarar variables en el lenguaje de programación C++ [4] . Define la relación de las variables declaradas con los componentes disponibles de un objeto complejo que actúa como su inicializador [5] :
atributo_opcional calificado_auto referencia_opcional [ lista_identificadores ] = expresión ; // declaración como enlace estructural atributo_opcional calificado_auto referencia_opcional [ lista_identificadores ] = { expresión }; // enlace estructural con inicialización de tupla atributo_opcional calificado_auto referencia_opcional [ lista_identificadores ] = ( expresión ); // enlace estructural para un tipo incompletoEn cierto sentido, el uso del enlace estructural descompone el inicializador en sus componentes constituyentes [6] . Como consecuencia, el número de variables declaradas usando enlace estructural debe coincidir con el número de elementos del inicializador [1] .
El enlace estructural permite acceder a los campos públicos de un objeto compuesto, por ejemplo, después de llamar a una función que devuelve un tipo de datos complejo. En muchos casos, el enlace estructural puede verse como una alternativa conveniente para lanzar excepciones [7] .
Para mejorar la legibilidad del código, no está prohibido usar un inicializador con enlace estructural en el encabezado de los operadores ifor for, donde se encuentra la verificación de condición [8] [9] .
El enlace estructural interactúa bien con las clases integradas estándar de la biblioteca STL , como pair[10] o tuple[11] .