...
This commit is contained in:
@@ -8,7 +8,6 @@
|
||||
|
||||
|
||||
#include <functional>
|
||||
#include <map>
|
||||
#include <system_error>
|
||||
|
||||
#include "adc_traits.h"
|
||||
@@ -251,8 +250,10 @@ public:
|
||||
{
|
||||
using from_sig_t = typename traits::adc_func_traits<FromFuncT>;
|
||||
using to_sig_t = typename traits::adc_func_traits<ToFuncT>;
|
||||
using value_t = typename to_sig_t::ret_t; // internal value type
|
||||
using user_t = typename from_sig_t::ret_t;
|
||||
// using value_t = typename to_sig_t::ret_t; // internal value type
|
||||
using value_t = std::remove_cv_t<typename to_sig_t::ret_t>; // internal value type
|
||||
// using user_t = typename from_sig_t::ret_t;
|
||||
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!!!");
|
||||
|
||||
@@ -267,7 +268,8 @@ public:
|
||||
this]() {
|
||||
if (_getterFunc<value_t>[this]) {
|
||||
auto val = _getterFunc<value_t>[this]();
|
||||
return std::get<0>(wrapper)(val); // convert from internal type
|
||||
// return std::get<0>(wrapper)(val); // convert from internal type
|
||||
return std::get<0>(wrapper)(_getterFunc<value_t>[this]()); // convert from internal type
|
||||
}
|
||||
// invalid conversion function signature
|
||||
throw std::system_error(AdcValueHolderErrorCode::ERROR_INTERNAL_TYPE_MISMATCH);
|
||||
@@ -307,12 +309,14 @@ public:
|
||||
AdcValueHolder& operator=(UT&& value)
|
||||
{
|
||||
// using v_t = std::remove_reference_t<UT>;
|
||||
using v_t = std::remove_cvref_t<UT>;
|
||||
using val_t = std::conditional_t<std::is_array_v<v_t>, std::add_pointer_t<std::remove_extent_t<v_t>>, v_t>;
|
||||
// using v_t = std::remove_cvref_t<UT>;
|
||||
// using val_t = std::conditional_t<std::is_array_v<v_t>, std::add_pointer_t<std::remove_extent_t<v_t>>, v_t>;
|
||||
using val_t = std::decay_t<UT>;
|
||||
|
||||
auto setter = _setterFunc<val_t>[this];
|
||||
if (setter) {
|
||||
setter(std::forward<UT>(value));
|
||||
// setter(std::forward<UT>(value));
|
||||
setter(value);
|
||||
} else {
|
||||
throw std::system_error(AdcValueHolderErrorCode::ERROR_NO_CONV_FUNC);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user