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