diff --git a/src/settings/internal/settings_object_data.h b/src/settings/internal/settings_object_data.h index 1f28db6..0369373 100644 --- a/src/settings/internal/settings_object_data.h +++ b/src/settings/internal/settings_object_data.h @@ -9,30 +9,35 @@ class SettingsObjectData public: template void addValue( const Value value ) { - std::list& list = getListObject(); + auto& list = getListObject(); list.push_back( value ); } template - Value getNextValueOrDefault( const Value defaultValue ) + auto getNextValueOrDefault( const Value defaultValue ) { - Value returnedValue = defaultValue; - - std::list& list = getListObject(); + auto& list = getListObject(); if ( hasValuesOfType() ) { - returnedValue = list.front(); + auto returnedValue = list.front(); list.pop_front(); + return returnedValue; + } + if constexpr ( std::is_same::value ) + { + return std::string( defaultValue ); + } + else + { + return defaultValue; } - - return returnedValue; } template bool hasValuesOfType() { - std::list& list = getListObject(); + auto& list = getListObject(); return !list.empty(); } @@ -48,13 +53,14 @@ public: } private: - template std::list& getListObject() + template auto& getListObject() { using std::is_same; const auto isBool = is_same::value; const auto isInt = is_same::value; const auto isDouble = is_same::value; - const auto isString = is_same::value; + const auto isString = is_same::value + || is_same::value; static_assert( isBool || isInt || isDouble || isString, "Type is not supported for the settings object." );