There are two reasons I think:
static
has two different meanings: at class scope, it means shared by the whole class while at file/function scope it affects the visibility/storage...
- unnamed namespaces allow to declare new
struct
, class
and typedef
One note though, the commitee backpedaled on this: static
is no longer marked as deprecated in n3225
.