Leere Struktur oder anonyme Struktur als Tag

8

Gibt es einen Unterschied zwischen der Definition des Tag-Typs als anonyme leere Struktur oder als leere Struktur?

%Vor%

In meinen Augen ist der einzige Unterschied der Name des "effektiven" Typs, wenn man eine Art der Reflexion verwendet (d. h. __PRETTY_FUNCTION__ , <cxxabi.h>:abi::__cxa_demangle(typeid().name()) usw.).

ADL funktioniert in beiden Richtungen:

%Vor%     
Orient 19.06.2015, 06:27
quelle

1 Antwort

5

Abgesehen von den verschiedenen Zeichenketten, die Sie bereits bemerkt haben, besteht der einzige wesentliche Unterschied darin, dass Sie mit einem elaborated-type-specifier auf B verweisen können, sodass Sie stattdessen struct B b; sagen können von B b; , aber Sie können struct A a; nicht verwenden, da A ein typedef-name ist, kein Klassenname.

Allerdings gibt es fast nie einen guten Grund, struct B anstatt nur B zu sagen, daher ist in der Praxis der Unterschied nicht wichtig, besonders nicht für Tag-Typen.

    
Jonathan Wakely 19.06.2015, 13:39
quelle

Tags und Links