Я использую 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 :: variable * which()
, если это единственное жизнеспособное решение.