Как распечатать 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
...