Gibt es einen Unterschied zwischen der Definition des Tag-Typs als anonyme leere Struktur oder als leere Struktur?Leere Struktur oder anonyme Struktur als Tag
using A = struct {};
struct B {};
In meinem Kopf ist der einzige Unterschied ist der „effektive“ Typname, wenn man eine Art Reflexion nutzen (das heißt __PRETTY_FUNCTION__
, <cxxabi.h>:abi::__cxa_demangle(typeid().name())
usw.).
ADL Arbeit für beiden Möglichkeiten:
namespace ns
{
using A = struct {};
struct B {};
constexpr
bool
adl(A)
{
return true;
}
constexpr
bool
adl(B)
{
return true;
}
}
template< typename type >
constexpr
bool
adl(type)
{
return false;
}
static_assert(adl(ns::A{}));
static_assert(adl(ns::B{}));
Nun, 'using' ist so ziemlich' typedef', was auf 'typedef struct' von C zurückgeht. Ich verstehe nicht, warum diese sich irgendwie unterscheiden sollten. –
Sie können keine speziellen Memberfunktionen für eine anonyme Struktur schreiben. – 0x499602D2