Ich sehe keinen Sinn darin, einen anonymen Namespace in eine Header-Datei zu setzen. Ich habe den Standard und die libstdC++ Header grep, hat keine anonymen Namensräumen abgesehen von einer in der tuple
Header (C++ 1x Sachen):
// A class (and instance) which can be used in 'tie' when an element
// of a tuple is not required
struct _Swallow_assign
{
template<class _Tp>
_Swallow_assign&
operator=(const _Tp&)
{ return *this; }
};
// TODO: Put this in some kind of shared file.
namespace
{
_Swallow_assign ignore;
}; // anonymous namespace
Das ist so können Sie tun
std::tie(a, std::ignore, b) = some_tuple;
Elemente des some_tuple werden den Variablen auf der linken Seite zugewiesen (siehe here), eine ähnliche Technik wird für this Iterator verwendet. Das zweite Element wird ignoriert.
Aber wie sie sagen, sollte es in eine CPP-Datei eingefügt werden und die eine Instanz sollte von allen Benutzern geteilt werden. Sie würden wie diese dann eine Erklärung von ihm in den Kopf gesetzt:
extern _Swallow_assign ignore;
Sehen Sie diese Diskussion: [http://stackoverflow.com/questions/357404/anonynous-namespaces](http://stackoverflow.com/questions/357404/anonynous-namespaces) –
das ist der Faden wo er diese Information von diesem anonymen Namespaces in Kopfzeilen hat, ist schlecht –
Ich kann nichts in diesem Thread über die Verwendung in Header-Dateien finden. Kann jemand erklären, warum das falsch ist? Und gilt es immer noch in C++ 11? – baruch