2015-12-05 4 views
5

In den folgenden C++ Going native video,
ist eine Spracheigenschaft namens "strukturelle Bindung" erwähnt.Wo ist der Vorschlag zur "strukturellen Bindung"?

Ich hatte einmal referred zu diesem Konzept als "Destrukturierung" (kommt von einem Javascript-Hintergrund).

Mit dieser Funktion können Benutzer mehrere Rückgabewerte erfassen, ohne dass std::tie verwendet werden muss, oder die Typen angeben.

Beispiel:

std::map<std::string,int> table; 
auto { cursor, inserted } = table.insert({"hello",0}); 

Wo kann ich diesen Vorschlag finden, und ihren Fortschritt verfolgen?

+0

[P0144R0] (http://wg21.link/P0144R0). Auch ein konkurrierender Vorschlag - [P0151R0] (http://wg21.link/P0151R0). Und ich bin mir ziemlich sicher, dass das Off-Topic ist ... –

+0

Ich suchte "strukturelle". Vielen Dank. @ T.C. Dann bin ich sicher, dass SO es schnell schließen wird. –

+0

Ich glaube, das ist marginal zum Thema, ich glaube, eine Neuformulierung mehr auf den Status dieses Vorschlags im Gegensatz zu konzentrieren, wo es die Frage verbessert. –

Antwort

12

Der Vorschlag, auf den Sie sich beziehen, ist P0144R0: Structured Bindings. Die post-Kona mailing listet dieses Papier als unter Evolution Working Group. Es ist nicht in der aktuellen Evolution Working Group(EWG) active issue list abgedeckt und Nicol Bolos weist darauf hin, dass die Liste der aktiven Ausgaben von EWG für Kona nicht aktualisiert wurde. Sobald es in der Liste "Aktive Konten" angezeigt wird, können Sie das Angebot verfolgen, indem Sie das Problem verfolgen.

Es gibt einige wirklich gute Reiseberichte und insbesondere Botond Ballo's trip report deckt diesen Vorschlag unter dem Abschnitt Vorschläge für die weitere Arbeit gefördert wird, und es sagt:

Ein Vorschlag für de-Strukturierung Initialisierung, das wäre Erlaube Schreiben auto {x, y, z} = Ausdruck; wo der Ausdruckstyp ein tupelähnliches Objekt war, dessen Elemente an die Variablen x, y und z gebunden wären (was dieses Konstrukt deklariert). "Tupel-ähnliche Objekte" umfassen std :: tuple, std :: pair, std :: array und Aggregatstrukturen. Dem Vorschlag fehlte ein Mechanismus, um einen nicht aggregierten benutzerdefinierten Typ an " " "tupelartig" anzupassen und mit dieser Syntax zu arbeiten; EWGs Feedback war, dass ein solcher Mechanismus wichtig ist. Darüber hinaus empfahl EWG, dass der Vorschlag erweitert werden sollte, um (optional) Typen für x, y und z, zu spezifizieren, anstatt ihre Typen abzuleiten.

Wir können die WG21 Treffen Mailing finden, indem Sie auf die WG21 site gehen und zum papers section gehen.

als T.C. stellt fest, es auch einen konkurrierenden Vorschlag P0151R0: Proposal of Multi-Declarators ist, die sagt:

wir einen besseren Ansatz für „Structured Bindungen“, wie definiert in P0144R0 wo „besser“ als knappere, mehr Ortogonal, mehr Allgemeinen ausdrucks vorschlagen definiert , weniger (parsingwise) mehrdeutig.

+0

Ich wollte den Tippfehler im orthogonalen korrigieren, aber dann sah der ursprüngliche Vorschlag den gleichen Tippfehler. Jetzt bin ich zerrissen: P – SirGuy

+0

"mehr ortogonal [sic], allgemeiner" sic erat scriptum – Vagrant