Ответ 1
Я не уверен, что "запрещено" - это правильное слово - возможно, это был просто недосмотр. Это довольно малое удовольствие, которое не имеет большого значения.
Вы также можете счесть точку зрения, что пространство имен foo
еще не создано при написании foo::bar
, поэтому включение этого синтаксиса делает его похожим на то, что foo
уже был создан, когда он не был.
Вы также можете пойти дальше и запросить возможность писать class Foo::MyClass {...
для определения MyClass
в пространстве имен foo
, а также для функций, переменных и т.д. Но эта функция действительно необходима и решает любую конкретную проблему