Ich habe das Papier über strukturierte Bindungen hier überflogen Ссылка Ich konnte jedoch nicht erkennen, an welche Arten von Strukturen die Syntax gebunden werden kann. Meine beste Vermutung ist, dass die Struktur ein Aggregattyp sein muss. Oder etwas mit nur öffentlichen Daten Mitgliedern.
Gibt es eine Einschränkung, die ich vermisse?
Wenn Sie std::tuple_size
, std::tuple_element
und get
für Ihren Typ nicht spezialisieren möchten, benötigt [dcl.decomp] Folgendes:
Andernfalls müssen alle nicht-statischen Datenmitglieder von
E
öffentliche direkte Mitglieder vonE
oder derselben eindeutigen Gruppe sein Öffentliche Basisklasse vonE
,E
darf kein anonymes Mitglied der Union haben und die Anzahl der Elemente in der Die Bezeichnerliste muss der Anzahl der nicht statischen Datenelemente vonE
entsprechen.
Im Grunde müssen also alle Datenelemente in derselben Klasse deklariert werden, und alle müssen öffentlich sein, und Sie müssen die gleiche Anzahl von Namen angeben wie Mitglieder.
Tags und Links c++ c++14 c++17 structured-bindings