...
This commit is contained in:
@@ -55,6 +55,7 @@ struct adc_func_traits_helper_t<R> {
|
||||
using ret_t = R;
|
||||
using args_t = std::tuple<>;
|
||||
using arg1_t = void;
|
||||
static constexpr size_t arity = 0;
|
||||
};
|
||||
|
||||
template <typename R, typename Arg, typename... Args>
|
||||
@@ -62,6 +63,7 @@ struct adc_func_traits_helper_t<R, Arg, Args...> {
|
||||
using ret_t = R;
|
||||
using args_t = std::tuple<Arg, Args...>;
|
||||
using arg1_t = Arg;
|
||||
static constexpr size_t arity = sizeof...(Args) + 1;
|
||||
};
|
||||
|
||||
|
||||
@@ -109,7 +111,7 @@ using adc_func_arg1_t = typename adc_func_traits<T>::arg1_t;
|
||||
template <typename T>
|
||||
using adc_deduced_type =
|
||||
std::conditional_t<std::is_lvalue_reference_v<T> && !std::is_const_v<std::remove_reference_t<T>>,
|
||||
T,
|
||||
T&,
|
||||
std::remove_cvref_t<T>>;
|
||||
|
||||
|
||||
|
||||
@@ -419,6 +419,10 @@ public:
|
||||
template <typename ValueT, typename SerializedT>
|
||||
static ValueT deserialize(const SerializedT& svalue)
|
||||
{
|
||||
if constexpr (std::is_void_v<ValueT>) {
|
||||
return;
|
||||
}
|
||||
|
||||
ValueT res;
|
||||
|
||||
if constexpr (traits::adc_is_tuple_v<ValueT>) {
|
||||
|
||||
@@ -382,9 +382,11 @@ protected:
|
||||
static_assert(std::is_convertible_v<traits::adc_retval_t<DSRT>, ValueT>,
|
||||
"INVALID RETURNED TYPE OF DESERIALIZING CALLABLE!!!");
|
||||
|
||||
|
||||
_serializerWrapper = [wrapper = traits::adc_pf_wrapper(std::forward<SRT>(serializer)), this]() {
|
||||
auto& serializer = std::get<0>(wrapper);
|
||||
|
||||
|
||||
auto val = _getterFunc<ValueT>[this]();
|
||||
|
||||
return serializer(val);
|
||||
@@ -486,6 +488,8 @@ public:
|
||||
AdcValueHolder::resetValueHolder(std::forward<GT>(getter), std::forward<ST>(setter),
|
||||
std::forward<VT>(validator));
|
||||
initWrappers<ret_value_t<GT>>(std::forward<SRT>(serializer), std::forward<DSRT>(deserializer));
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
@@ -507,6 +511,8 @@ public:
|
||||
std::forward<VT>(validator), std::tuple<Ts...>{});
|
||||
|
||||
initWrappers<ret_value_t<GT>>(std::forward<SRT>(serializer), std::forward<DSRT>(deserializer));
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
template <typename GT,
|
||||
@@ -524,6 +530,8 @@ public:
|
||||
AdcValueHolder::resetValueHolder(std::forward<GT>(getter), std::forward<ST>(setter), std::tuple<Ts...>{});
|
||||
|
||||
initWrappers<ret_value_t<GT>>(std::forward<SRT>(serializer), std::forward<DSRT>(deserializer));
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user