diff --git a/common/adc_value.h b/common/adc_value.h index 58f2c6b..47da948 100644 --- a/common/adc_value.h +++ b/common/adc_value.h @@ -258,11 +258,6 @@ public: requires std::invocable&> && std::invocable&> { - // using from_sig_t = typename traits::adc_func_traits; - // using to_sig_t = typename traits::adc_func_traits; - // using value_t = std::decay_t; // internal value type - // using user_t = std::decay_t; - using value_t = ret_value_t; // it must be internal value type using user_t = ret_value_t; @@ -550,23 +545,24 @@ public: */ -template , - typename VT = decltype(AdcValueHolder::AdcValueHolderDummyValidator)> -AdcValueHolder make_arith_valueholder(GT&& getter, - std::invocable auto&& setter, - VT&& validator = AdcValueHolder::AdcValueHolderDummyValidator) + typename VT = decltype(AdcValueHolder::AdcValueHolderDummyValidator), + typename... Ts> +HolderT makeArithmValue(GT&& getter, + std::invocable auto&& setter, + VT&& validator = AdcValueHolder::AdcValueHolderDummyValidator, + Ts&&... other_ctor_args) requires std::invocable && std::predicate { using val_t = traits::adc_retval_t; - // static_assert(std::predicate&>, - // "INVALID VALIDATOR TYPE!!!"); - static_assert(std::is_arithmetic_v, "GETTER MUST RETURN AN ARITHMETIC TYPE VALUE!!!"); - return AdcValueHolder(std::forward(getter), std::forward(setter), - std::forward(validator), AdcValueHolder::_defaultTrivialConvTypes); + return HolderT(std::forward(getter), std::forward(setter), + std::forward(validator), AdcValueHolder::_defaultTrivialConvTypes, + std::forward(other_ctor_args)...); } diff --git a/tests/adc_valueholder_test.cpp b/tests/adc_valueholder_test.cpp index dc4ea37..0a68ec7 100644 --- a/tests/adc_valueholder_test.cpp +++ b/tests/adc_valueholder_test.cpp @@ -48,7 +48,8 @@ TEST_CASE("[ADC VALUEHOLDER]") adc::AdcValueHolder vht(getter, setter, adc::AdcValueHolder::_defaultTrivialConvTypes); adc::AdcValueHolder vh(getter, setter, validator); - auto vah = adc::make_arith_valueholder(getter, setter); + // auto vah = adc::make_arith_valueholder(getter, setter); + auto vah = adc::makeArithmValue(getter, setter); vh = 77;