Por que não podemos declarar um namespace dentro de uma classe?

Declarar uma classe dentro de uma classe é válido. (Aulas aninhadas)

Declarar um namespace dentro de uma classe é inválido.

A questão é: existe algum bom motivo (além de problemas gramaticais / sintáticos de c ++) para proibir a declaração de um namespace dentro de uma classe?

Quanto a por que eu quero fazer isso, aqui está um exemplo:

Vamos ter um delcaration básico de um container de árvore binária

template<typename Data>
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;
};

Agora eu noto que existem muitos iteradores na minha classe, então eu gostaria de reagrupá-los dentro do mesmo espaço de nomes como este:

template<typename Data>
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;
};

Isso permitiria um uso simples:

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

  ...stuff...
}

Isso funciona se eu usar uma classe em vez de um namespace, mas sou forçado a declarar uma classe que nunca será instanciada, o que é um namespace.

Por que permitir classes aninhadas e proibir namespaces aninhados em classes? é um fardo legado?

Respostas com motivos semânticos que não citem apenas parte do padrão (especialmente partes da sintaxe) serão apreciadas :)

questionAnswers(5)

yourAnswerToTheQuestion