I think I understand your question (which was not worded correctly). You are basically wondering what the difference between the global and anonymous namespaces are. Consider this example:
namespace
{
void Foo()
{
}
}
void Foo()
{
}
Now if you call
Foo()
, the compiler will be confused. They are both under equal callable scope for
Foo
. You will need to explicitly call
::Foo
which calls the global method (the 2nd one). You cannot call the anonymous
Foo
here now. Now if you comment out the global
Foo
, then your call to
Foo
(no :: there) will work since the compiler will look in the anonymous namespace after it first looks for a global version.
Does that answer your question?