Nie widzę sensu umieszczania anonimowego obszaru nazw w pliku nagłówkowym. Mam grepped średnia i nagłówki libstdC++, nie znaleziono anonimowych nazw oprócz jednego w nagłówku tuple
(C++ 1x rzeczy):
// 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
Jest więc można zrobić
std::tie(a, std::ignore, b) = some_tuple;
elementy some_tuple są przypisane zmiennym po lewej stronie (patrz here), podobną technikę stosuje się do iteratora this. Drugi element jest ignorowany.
Ale jak to mówią, należy umieścić go w pliku .cpp, a jedno wystąpienie powinno być udostępnione wszystkim użytkownikom. Oni umieścić oświadczenie o nim w nagłówku jak to wówczas:
extern _Swallow_assign ignore;
Zobacz tę dyskusję: [http://stackoverflow.com/questions/357404/anonynous-namespaces](http://stackoverflow.com/questions/357404/anonynous-namespaces) –
to wątek skąd ma te informacje z anonimowych przestrzeni nazw w nagłówkach jest zły –
Nie mogę znaleźć niczego w tym wątku o używaniu go w plikach nagłówkowych. Czy ktoś może wyjaśnić, dlaczego tak się nie stało? I czy nadal ma zastosowanie w C++ 11? – baruch