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

Respuestas a la pregunta(9)

Su respuesta a la pregunta