...
This commit is contained in:
parent
3ea9aa9c4d
commit
2412b59b7a
@ -258,11 +258,6 @@ public:
|
|||||||
requires std::invocable<FromFuncT, const ret_value_t<ToFuncT>&> &&
|
requires std::invocable<FromFuncT, const ret_value_t<ToFuncT>&> &&
|
||||||
std::invocable<ToFuncT, const ret_value_t<FromFuncT>&>
|
std::invocable<ToFuncT, const ret_value_t<FromFuncT>&>
|
||||||
{
|
{
|
||||||
// using from_sig_t = typename traits::adc_func_traits<FromFuncT>;
|
|
||||||
// using to_sig_t = typename traits::adc_func_traits<ToFuncT>;
|
|
||||||
// using value_t = std::decay_t<typename to_sig_t::ret_t>; // internal value type
|
|
||||||
// using user_t = std::decay_t<typename from_sig_t::ret_t>;
|
|
||||||
|
|
||||||
using value_t = ret_value_t<ToFuncT>; // it must be internal value type
|
using value_t = ret_value_t<ToFuncT>; // it must be internal value type
|
||||||
using user_t = ret_value_t<FromFuncT>;
|
using user_t = ret_value_t<FromFuncT>;
|
||||||
|
|
||||||
@ -550,23 +545,24 @@ public:
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
template <typename GT,
|
template <typename HolderT,
|
||||||
|
typename GT,
|
||||||
typename VALT = traits::adc_retval_t<GT>,
|
typename VALT = traits::adc_retval_t<GT>,
|
||||||
typename VT = decltype(AdcValueHolder::AdcValueHolderDummyValidator<VALT>)>
|
typename VT = decltype(AdcValueHolder::AdcValueHolderDummyValidator<VALT>),
|
||||||
AdcValueHolder make_arith_valueholder(GT&& getter,
|
typename... Ts>
|
||||||
|
HolderT makeArithmValue(GT&& getter,
|
||||||
std::invocable<const VALT&> auto&& setter,
|
std::invocable<const VALT&> auto&& setter,
|
||||||
VT&& validator = AdcValueHolder::AdcValueHolderDummyValidator<VALT>)
|
VT&& validator = AdcValueHolder::AdcValueHolderDummyValidator<VALT>,
|
||||||
|
Ts&&... other_ctor_args)
|
||||||
requires std::invocable<GT> && std::predicate<VT, const VALT&>
|
requires std::invocable<GT> && std::predicate<VT, const VALT&>
|
||||||
{
|
{
|
||||||
using val_t = traits::adc_retval_t<GT>;
|
using val_t = traits::adc_retval_t<GT>;
|
||||||
|
|
||||||
// static_assert(std::predicate<decltype(validator), const traits::adc_retval_t<decltype(getter)>&>,
|
|
||||||
// "INVALID VALIDATOR TYPE!!!");
|
|
||||||
|
|
||||||
static_assert(std::is_arithmetic_v<val_t>, "GETTER MUST RETURN AN ARITHMETIC TYPE VALUE!!!");
|
static_assert(std::is_arithmetic_v<val_t>, "GETTER MUST RETURN AN ARITHMETIC TYPE VALUE!!!");
|
||||||
|
|
||||||
return AdcValueHolder(std::forward<GT>(getter), std::forward<decltype(setter)>(setter),
|
return HolderT(std::forward<GT>(getter), std::forward<decltype(setter)>(setter),
|
||||||
std::forward<decltype(validator)>(validator), AdcValueHolder::_defaultTrivialConvTypes);
|
std::forward<decltype(validator)>(validator), AdcValueHolder::_defaultTrivialConvTypes,
|
||||||
|
std::forward<Ts>(other_ctor_args)...);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -48,7 +48,8 @@ TEST_CASE("[ADC VALUEHOLDER]")
|
|||||||
|
|
||||||
adc::AdcValueHolder vht(getter, setter, adc::AdcValueHolder::_defaultTrivialConvTypes);
|
adc::AdcValueHolder vht(getter, setter, adc::AdcValueHolder::_defaultTrivialConvTypes);
|
||||||
adc::AdcValueHolder vh(getter, setter, validator);
|
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<adc::AdcValueHolder>(getter, setter);
|
||||||
|
|
||||||
vh = 77;
|
vh = 77;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user