diff --git a/opm/models/utils/parametersystem.hh b/opm/models/utils/parametersystem.hh index 46de46ad8..f775052fe 100644 --- a/opm/models/utils/parametersystem.hh +++ b/opm/models/utils/parametersystem.hh @@ -41,13 +41,15 @@ #include #include +#include +#include +#include #include #include -#include #include +#include #include -#include -#include +#include #include #include @@ -71,8 +73,8 @@ * \endcode */ #define EWOMS_REGISTER_PARAM(TypeTag, ParamType, ParamName, Description) \ - ::Opm::Parameters::registerParam( \ - #ParamName, getPropValue(), Description) + ::Opm::Parameters::registerParam( \ + #ParamName, Description) /*! * \ingroup Parameter @@ -1102,14 +1104,18 @@ bool isSet(const char* paramName, bool errorIfNotRegistered = true) errorIfNotRegistered); } -template -void registerParam(const char* paramName, const ParamType& defaultValue, const char* usageString) +template class Param> +void registerParam(const char* paramName, const char* usageString) { using ParamsMeta = GetProp; if (!ParamsMeta::registrationOpen()) throw std::logic_error("Parameter registration was already closed before " "the parameter '"+std::string(paramName)+"' was registered."); + const auto defaultValue = getPropValue(); + using ParamType = std::conditional_t, std::string, + std::remove_const_t>; ParamsMeta::registrationFinalizers().emplace_back( new ParamRegFinalizer_(paramName, defaultValue));