当像下面这样的调用失败时,有没有办法知道涉及哪个键?
boost::program_options::variables_map vm;
...
int foo_bar = vm["some_key"].as<int>();
如果地图中缺少密钥,或者无法转换为 int,我会得到一个相当无用的 bad_any_cast,并且我不知道以下任何内容:
- 涉及的关键
- 存储的价值,或者即使它在那里。
- 涉及的类型
我找不到任何不涉及修改 boost 标头或将每个对上述内容的调用包装在 try..catch 块中的解决方案。我认为这是一个常见问题,所以也许其他人知道更好的方法。