std::map<const char*, boost::any>
ライブラリの設定を保存するために使用しています。各設定は単一の基になる値の型のみを使用し、構成の呼び出し中にこれを強制したいと考えてset()
います。設定は、正しいタイプのデフォルト値で初期化されます。
これは、私が達成しようとしていることをうまく示している疑似コードです。
using namespace std;
using namespace boost;
void set(map<const char *, any> &settings, const char *key, any &value)
{
if (type_of(value) != type_of(settings[key]) throw wrong_type_exception();
settings[key] = value;
}
実行時にこのような型エラーをトラップすることは可能ですか? 可能であれば、API にテンプレート関数を含めたくないです。
私は使用しましたが、それが唯一の実行可能な解決策である場合は、boost::any
boost::variant を検討するかもしれません。which()