std::string get(const std::string& name, const dynamic_properties& dp, const Key& key) { for (dynamic_properties::const_iterator i = dp.lower_bound(name); i != dp.end() && i->first == name; ++i) { if (i->second->key() == typeid(key)) return i->second->get_string(key); } BOOST_THROW_EXCEPTION(dynamic_get_failure(name)); }
Value get(const std::string& name, const dynamic_properties& dp, const Key& key, type<Value>) { for (dynamic_properties::const_iterator i = dp.lower_bound(name); i != dp.end() && i->first == name; ++i) { if (i->second->key() == typeid(key)) return any_cast<Value>(i->second->get(key)); } throw dynamic_get_failure(name); }