Je ne vois pas de point de mettre un espace de noms anonyme dans un fichier d'en-tête. J'ai les en-têtes standards rassemblés de et les libstdC++, pas trouvé anonyme namespaces en dehors d'un dans l'en-tête tuple
(C++ 1x substance):
// 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
Ceci est donc vous pouvez avoir
std::tie(a, std::ignore, b) = some_tuple;
Les éléments du some_tuple sont assignés aux variables du côté gauche (voir here), une technique similaire est utilisée pour l'itérateur this. Le deuxième élément est ignoré.
Mais comme on dit, il devrait être mis dans un fichier .cpp et une instance doit être partagée par tous les utilisateurs. Ils ont mis une déclaration dans l'en-tête comme celui-ci alors:
extern _Swallow_assign ignore;
Voir cette discussion: [http://stackoverflow.com/questions/357404/anonynous-namespaces](http://stackoverflow.com/questions/357404/anonynous-namespaces) –
qui est le fil où il a obtenu cette information à partir des espaces de noms anonymes dans les en-têtes est mauvais –
Je ne trouve rien dans ce fil à propos de l'utiliser dans les fichiers d'en-tête. Quelqu'un peut-il expliquer pourquoi c'est faux? Et s'applique-t-il toujours en C++ 11? – baruch