diff --git a/src/core/config/common_option.h b/src/core/config/common_option.h index 374ffe6353..3a9cc909c5 100644 --- a/src/core/config/common_option.h +++ b/src/core/config/common_option.h @@ -17,22 +17,25 @@ class CommonOption { std::optional const default_value_; typename Option::NormalizeFunc const normalize_func_; typename Option::ValueCheckFunc const value_check_func_; + typename Option::DefaultFunc const default_func_; public: CommonOption(std::string_view name, std::string_view description, std::optional default_value = std::nullopt, typename Option::NormalizeFunc normalize_func = nullptr, - typename Option::ValueCheckFunc value_check_func = nullptr) + typename Option::ValueCheckFunc value_check_func = nullptr, + typename Option::DefaultFunc default_func_ = nullptr) : name_(name), description_(description), default_value_(default_value), normalize_func_(normalize_func), - value_check_func_(value_check_func) {} + value_check_func_(value_check_func), + default_func_(default_func_) {} [[nodiscard]] Option operator()(T *value_ptr) const { auto option = default_value_.has_value() ? Option{value_ptr, name_, description_, default_value_.value()} - : Option{value_ptr, name_, description_}; + : Option{value_ptr, name_, description_, default_func_}; if (normalize_func_) option.SetNormalizeFunc(normalize_func_); if (value_check_func_) option.SetValueCheck(value_check_func_); return option;