Kyle A. answered 05/05/20
Senior Software Engineer Specializing in Systems Programming
You are correct in that an unnamed namespace seems very similar to using the static keyword from C to create a function or variable with internal linkage (only visible in its own translation unit). However unnamed namespaces also allow you to specify typedefs and classes that are only visible within the translation unit. You can't specify a static class in C++.
This can allow you to have multiple essentially private classes with the same name across your project because anonymous namespaces across translation units are considered different by the compiler.
Subtle difference there and there may be more hiding in the C++ standard but in the common case of a static function or a variable they are extremely similar!