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
...