¿Cómo imprimir boost :: any a una secuencia?
Tengo un mapastd::map<std::string, boost::any>
, que proviene de laboost::program_options
paquete. Ahora me gustaría imprimir el contenido de ese mapa:
for(po::variables_map::const_iterator it = vm.begin(); it != vm.end(); ++it) {
std::cerr << it->first << ": " << it->second << std::endl;
}
Desafortunadamente, eso no es posible porqueboost::any
no tiene unoperator<<
definido.
¿Cuál es la forma más fácil de imprimir ese mapa?
Podría definir mi propio operador de salida para cualquiera que automáticamente intente lanzar cadaany
a un int, luego doble, luego una cadena, etc., cada vez ignorando los errores e intentando emitir hasta que el reparto sea exitoso y pueda imprimir como el tipo especificado.
¿Pero debería haber un método más fácil en Boost? Necesitaría algo como un reversolexical_cast
...