次のような呼び出しが失敗したときに、どのキーが関係していたかを知る方法はありますか?
boost::program_options::variables_map vm;
...
int foo_bar = vm["some_key"].as<int>();
キーがマップにない場合、または int に変換できない場合は、かなり情報に乏しい bad_any_cast が返され、次のいずれかを知ることができません。
- 関係する鍵
- 保存された値、またはそこにある場合でも。
- 関与するタイプ
ブーストヘッダーを変更したり、上記へのすべての呼び出しを try..catch ブロックにラップしたりする必要のない解決策は見つかりません。これは一般的な問題だと思うので、他の誰かがより良いアプローチを知っているかもしれません。