Почему мы не можем объявить пространство имен внутри класса?

Объявление класса внутри класса допустимо. (Вложенные классы)

Объявление пространства имен внутри класса недопустимо.

Вопрос: есть ли веская причина (кроме проблем грамматики / синтаксиса в c ++) запретить объявление пространства имен в классе?

Что касается того, почему я хотел бы сделать это, вот пример:

Позволять'имеют базовую делькарацию контейнера двоичного дерева

template
class binary_tree
{
 public:
  ... stuff ....     

 private:
  ... iterators class declaration ...

 public:
  typedef left_depth_iterator_impl     left_depth_iterator;
  typedef right_depth_iterator_impl    right_depth_iterator;
  typedef left_breadth_iterator_impl   left_breadth_iterator;
  typedef right_breadth_iterator_impl  right_breadth_iterator;

  ... stuff ....     

 private:
  Data         data;
  binary_tree* left;
  binary_tree* right;
};

Теперь я заметил, что в моем классе много итераторов, поэтому я хотел бы перегруппировать их в одном и том же пространстве имен:

template
class binary_tree
{
 public:
  ... stuff ....     

 private:
  ... iterators class declaration ...

 public:
  namespace iterator
  {
    typedef left_depth_iterator_impl     left_depth;
    typedef right_depth_iterator_impl    right_depth;
    typedef left_breadth_iterator_impl   left_breadth;
    typedef right_breadth_iterator_impl  right_breadth;
  }

  ... stuff ....     

 private:
  Data         data;
  binary_tree* left;
  binary_tree* right;
};

Это позволило бы простое использование:

void  function()
{
  binary_tree::iterator::left_depth   it;

  ...stuff...
}

Это работает, если я использую класс вместо пространства имен, но затем я вынужден объявить класс, который никогда не будет создан, что является вполне пространством имен.

Зачем разрешать вложенные классы и запрещать вложенные пространства имен внутри классов? это наследственное бремя?

Будут оценены ответы с семантическими причинами, которые указывают не только часть стандарта (особенно части синтаксиса) :)

Ответы на вопрос(5)

Ваш ответ на вопрос