This commit is contained in:
Timur A. Fatkhullin 2025-10-02 19:21:13 +03:00
parent 4d7e830798
commit 962504ed98

View File

@ -129,6 +129,13 @@ public:
}
value = r;
} else if constexpr (mcc::traits::mcc_time_duration_c<value_t>) {
typename value_t::rep vd;
bool ok = self(str, vd);
if (ok) {
value = value_t{vd};
}
} else {
return false;
}
@ -231,8 +238,8 @@ public:
if constexpr (std::convertible_to<v_t, T>) {
res = static_cast<T>(std::forward<decltype(val)>(val));
} else if constexpr (std::constructible_from<T, v_t>) {
res = T{std::forward<decltype(val)>(val)};
// } else if constexpr (std::constructible_from<T, v_t>) {
// res = T{std::forward<decltype(val)>(val)};
} else {
res = std::unexpected(std::make_error_code(std::errc::invalid_argument));
}
@ -707,16 +714,9 @@ protected:
bool ok = true;
if constexpr (std::is_arithmetic_v<value_t> || std::ranges::output_range<value_t, char> ||
std::ranges::range<value_t>) {
if constexpr (std::is_arithmetic_v<value_t> || mcc::traits::mcc_output_char_range<value_t> ||
std::ranges::range<value_t> || mcc::traits::mcc_time_duration_c<value_t>) {
return base_t::defaultDeserializeFunc(str, value);
} else if constexpr (mcc::traits::mcc_time_duration_c<value_t>) {
typename value_t::rep vd;
ok = base_t::defaultDeserializeFunc(str, vd);
if (ok) {
value = value_t{vd};
}
} else if constexpr (std::same_as<value_t, mcc::MccAngle>) { // assume here all angles are in degrees
double vd;
ok = base_t::defaultDeserializeFunc(str, vd);