template typename std::enable_if::value,T>::type getValue() { switch(_valueDataType) { case ValueDataType::BOOLEAN_TYPE: if (_value == "true") { return (T)true; } else { return (T)false; } break; case ValueDataType::INTEGER_TYPE: return (T)atoi(_value.c_str()); break; case ValueDataType::DOUBLE_TYPE: return (T)atof(_value.c_str()); break; } return 0; } string getValueAsString() { return _value; } // Calling it string s; int a; bool b; double c; case ValueDataType::STRING_TYPE: s = iter->second.getValueAsString(); break; case ValueDataType::INTEGER_TYPE: a = iter->second.getValue(); break; case ValueDataType::BOOLEAN_TYPE: b = iter->second.getValue(); break; case ValueDataType::DOUBLE_TYPE: c = iter->second.getValue(); break;