Como imprimir boost :: any para um stream?

Eu tenho um mapastd::map<std::string, boost::any>, que vem doboost::program_options pacote. Agora eu gostaria de imprimir o conteúdo desse mapa:

for(po::variables_map::const_iterator it = vm.begin(); it != vm.end(); ++it) {
  std::cerr << it->first << ": " << it->second << std::endl;
}

Infelizmente, isso não é possível porqueboost::any não tem umoperator<< definiram.

Qual é a maneira mais fácil de imprimir esse mapa?

Eu poderia definir meu próprio operador de saída para qualquer um que tente converter automaticamente cadaany para um int, depois dobre e, em seguida, sequência, etc., sempre ignorando erros e tentando transmitir até que o elenco seja bem-sucedido e eu possa imprimir como o tipo especificado.

Mas deve haver um método mais fácil no Boost? Eu precisaria de algo como um reversolexical_cast...

questionAnswers(9)

yourAnswerToTheQuestion