Herdando classes de std ::

Existem muitas perguntas semelhantes e eu encontrei razões pró e contra para usar esse padrão, então estou perguntando isso aqui:

Eu preciso fazer uma implementação JSON em C ++ (digamos que é como uma lição de casa). Eu estava pensando em fazer assim:

namespace JSON {
  class JSON { };
  class object : public JSON, public std::unordered_map<std::string,JSON> { };
  class vector : public JSON, public std::vector<JSON> { };
  class string : public JSON, public std::string { };
  ...
};

Se você pensar sobre isso, tudo faz sentido. O objeto JSON "é um" mapa não ordenado, o vetor JSON "é um" e assim por diante. Só que eles também são um valor JSON e, por exemplo, um vetor JSON pode conter qualquer tipo de valor JSON (objetos, vetores, cadeias etc.). Você também obtém muitos benefícios e pode usar o JSON "naturalmente" em C ++ (você pode ter um vetor std :: string real dentro de json ["mystringlist"], sendo json realmente um mapa não-ordenado).

Eu realmente não sou um especialista em C ++, mas existe algum motivo específico para não fazer isso?