Skip to content
- As you’ve mentioned, namespace works for anything, not just for functions and objects.
- As Greg has pointed out,
static
means too many things already.
- Namespaces provide a uniform and consistent way of controlling visibility at the global scope. You don’t have to use different tools for the same thing.
- When using an anonymous namespace, the function/object name will get mangled properly, which allows you to see something like “(anonymous namespace)::xyz” in the symbol table after de-mangling, and not just “xyz” with static linkage.
- As pointed out in the comments below, it isn’t allowed to use static things as template arguments, while with anonymous namespaces it’s fine.
- More? Probably, but I can’t think of anything else right now.