Strukturerad bindning är en syntaktisk innovation av programmeringsspråksstandarden C++17 [ 1 ] , utformad för att packa upp komplexa icke-statiska datatyper och representera dem som en sammansättning av deras beståndsdelar [2] [3] .
Strukturell bindning är ett av de nya alternativen för att deklarera variabler i programmeringsspråket C++ [4] . Den definierar förhållandet mellan deklarerade variabler och de tillgängliga komponenterna i ett komplext objekt som fungerar som deras initialiserare [5] :
optional_attribute qualified_auto optional_reference [ identifier_list ] = uttryck ; // deklaration som en strukturell bindning optional_attribute qualified_auto optional_reference [ identifier_list ] = { expression }; // strukturell bindning med tuppelinitiering optional_attribute qualified_auto optional_reference [ identifier_list ] = ( uttryck ); // strukturell bindning för en ofullständig typPå sätt och vis sönderdelar användningen av strukturell bindning initialiseraren till dess beståndsdelar [6] . Som en konsekvens måste antalet variabler som deklareras med hjälp av strukturell bindning matcha antalet element i initialiseraren [1] .
Strukturell bindning gör det möjligt att komma åt de publika fälten för ett sammansatt objekt, till exempel efter att ha anropat en funktion som returnerar en komplex datatyp. I många fall kan strukturell bindning ses som ett bekvämt alternativ till att kasta undantag [7] .
För att förbättra läsbarheten av koden är det inte förbjudet att använda en initialiserare med strukturell bindning i huvudet på ifeller operatörerna for, där tillståndskontrollen finns [8] [9] .
Strukturell bindning interagerar bra med de inbyggda standardklasserna i STL -biblioteket , såsom pair[10] eller tuple[11] .