Es ist einfach, eine Methode / Funktion zu erstellen, die auf den Typ einer unbenannten Struktur parametrisiert ist. Es ist auch einfach, den Typ nach der Definition der Struktur zu erhalten.
%Vor% Aber gibt es irgendeine "Magie", die die Verwendung des Typs unnamed
im Struct-Bereich oder in einer statischen Methode ermöglichen könnte - nicht nur innerhalb seiner Konstruktor / Instanz-Methode oder nachdem eine Instanz deklariert wurde? Es ist trivial, wenn die Struktur benannt wird:
Diese Frage wurde von einer Frage zur Implementierung eines Destruktors in einer unbenannten Struktur motiviert. Die triviale Lösung bestand darin, eine benannte Struktur in eine unbenannte umzubrechen - ein solcher Wrapper kann dann in Makros verwendet werden, ohne mit anderen Typen zu kollidieren, usw.
%Vor%Die Lösung des Zugangskonzepts des Typs würde eine andere Lösung für die motivierende Frage ermöglichen.
So etwas, vielleicht?
Die Idee ist, dass Sie tatsächlich zwei unbenannte Strukturen haben. Erstens enthält unnamed
den gesamten tatsächlichen Code / Daten und Zeug. Dann gibt es unnamedWrapper
, das decltype
über unnamed
verwenden kann, ist nur ein komplett-Weiterleiten (auch für Konstruktoren!) Wrapper um unnamed
, mit der einzigen Spezialität, die unnamed
exportiert tippe durch einen typedef.