Как распечатать boost :: any в поток?

У меня есть картаstd::map<std::string, boost::any>, который исходит отboost::program_options пакет. Теперь я хотел бы напечатать содержимое этой карты:

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

К сожалению, это невозможно, потому чтоboost::any не имеетoperator<< определены.

Какой самый простой способ напечатать эту карту?

Я мог бы определить свой собственный оператор вывода для любого, который автоматически пытается привести каждыйany в int, затем в double, затем в строку и т. д., каждый раз игнорируя ошибки и пытаясь привести, пока приведение не будет успешным, и я смогу печатать как указанный тип.

Но должен ли быть более простой метод в Boost? Мне нужно что-то вроде обратногоlexical_cast...

Ответы на вопрос(9)

Ваш ответ на вопрос