Aqui está a definição:
struct nmap; struct nmap: map<string, boost::variant<string, nmap*>>{};
A última linha abaixo não funciona:
nmap my_map; my_map["a"] = "b"; my_map["c"] = new nmap; my_map["c"]["d"] = "e";
O que preciso adicionar para que isso funcione?