Die Deklaration der strukturierten Bindung in C ++ 17 ermöglicht verschiedene Optionen, wie z :
%Vor% Gibt es eine Möglichkeit, a
und b
verschiedene CV-Qualifier zu vergeben? Zum Beispiel der Typ von a
als int
und b
als int const
?
Nein - dies wird im Vorschlag behandelt. " s Q & A:
%Vor%Soll die Syntax erweitert werden, um die Typen der einzelnen Namen zu const / & amp; zu qualifizieren?
Wir denken, die Antwort sollte nein sein. Dies ist eine einfache Funktion, um einen Wert zu speichern und Namen an seine Komponenten zu binden, nicht mehrere Variablen deklarieren. Eine solche Qualifizierung zuzulassen wäre ein Feature-Creep, das das Feature auf erweitert etwas anderes sein, nämlich eine Möglichkeit, mehrere Variablen zu deklarieren. Wenn wir mehrere Variablen deklarieren wollen, haben wir bereits eine Möglichkeit, sie zu buchstabieren:
%Vor%
Es ist nicht erlaubt, aber es scheint einige Missverständnisse darüber zu geben, wie strukturierte Bindung funktioniert. Das folgende ist, wie Ihr Schnipsel tatsächlich funktioniert:
%Vor% Basierend auf den Beispielen, die Sie angegeben haben, scheint der Fehler darin zu bestehen, dass das auto
in auto [a, b]
auf die Variablen verteilt ist. Es tut nicht. Die auto
gibt es eigentlich den Typ des Initialisierers. In C ++ wird dies grob wie folgt codiert:
Dies steht im Gegensatz zu etwas wie:
%Vor%