-XBT_PUBLIC(bool) parseBool(const char* value);
-XBT_PUBLIC(double) parseDouble(const char* value);
-XBT_PUBLIC(long int) parseLong(const char* value);
-
-template<class T> struct parse_option {
- static inline T parse(const char* value)
- {
- return T(value);
- }
-};
-
-template<> struct parse_option<std::string> {
- static inline std::string parse(const char* value)
- {
- return std::string(value);
- }
-};
-
-template<>
-struct parse_option<double> {
- static inline double parse(const char* value)
- {
- return parseDouble(value);
- }
-};
-
-template<>
-struct parse_option<int> {
- static inline double parse(const char* value)
- {
- return parseLong(value);
- }
-};
-
-template<>
-struct parse_option<bool> {
- static inline bool parse(const char* value)
- {
- return parseBool(value);
- }
+XBT_PUBLIC_CLASS missing_key_error : public std::runtime_error {
+public:
+ explicit missing_key_error(const std::string& what)
+ : std::runtime_error(what) {}
+ explicit missing_key_error(const char* what)
+ : std::runtime_error(what) {}
+ ~missing_key_error() override;