Wie wird der Typ einer unbenannten Struktur extrahiert, um einen neuen Typ innerhalb der Struktur selbst zu erstellen?

9

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:

%Vor%

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.

    
Kuba Ober 26.08.2015, 21:35
quelle

1 Antwort

3

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.

%Vor%     
3442 26.08.2015, 22:31
quelle

Tags und Links