This commit is contained in:
Timur A. Fatkhullin 2024-04-28 00:43:08 +03:00
parent c84756ce07
commit 7737edc77f

View File

@ -235,7 +235,7 @@ public:
std::forward<decltype(validator)>(validator));
// setup trivially-defined conversion function
AdcValueHolder::setupTrivialConvertFunc<traits::adc_retval_t<decltype(getter)>, std::tuple<Ts...>>();
setupTrivialConvertFunc<traits::adc_retval_t<decltype(getter)>, std::tuple<Ts...>>();
return *this;
}
@ -254,22 +254,13 @@ public:
template <typename FromFuncT, typename ToFuncT>
AdcValueHolder& addConvertFunc(FromFuncT&& func_from_internal, ToFuncT&& func_to_internal)
requires std::invocable<FromFuncT, std::remove_cvref_t<traits::adc_retval_t<ToFuncT>>> &&
std::invocable<ToFuncT, std::remove_cvref_t<traits::adc_retval_t<FromFuncT>>>
requires std::invocable<FromFuncT, std::decay_t<traits::adc_retval_t<ToFuncT>>> &&
std::invocable<ToFuncT, std::decay_t<traits::adc_retval_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::remove_cv_t<typename to_sig_t::ret_t>; // internal value type
using user_t = std::remove_cv_t<typename from_sig_t::ret_t>;
// static_assert(!std::is_same_v<value_t, void>, "void IS NOT VALID TYPE!!!");
// static_assert(!std::is_void_v<typename traits::adc_func_traits<FromFuncT>::arg1_t>,
// "INVALID CONVERSIONAL FUNCTION!!!");
// static_assert(std::is_same_v<std::remove_cvref_t<typename traits::adc_func_traits<FromFuncT>::arg1_t>,
// value_t>,
// "INVALID CONVERSIONAL FUNCTION!!!");
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>;
_getterFunc<user_t>[this] = [wrapper = traits::adc_pf_wrapper(std::forward<FromFuncT>(func_from_internal)),
this]() {
@ -342,8 +333,6 @@ public:
protected:
/* STATIC HELPER METHODS */
template <typename VT, size_t I, typename TupleT>
void setupTrivialConvertFuncImpl()
{
@ -355,7 +344,7 @@ protected:
[](const elem_t& v) { return static_cast<VT>(v); });
}
AdcValueHolder::setupTrivialConvertFuncImpl<VT, I + 1, TupleT>();
setupTrivialConvertFuncImpl<VT, I + 1, TupleT>();
}
}