diff --git a/src/core/include/mp-units/ext/type_traits.h b/src/core/include/mp-units/ext/type_traits.h index c93952c1..01d3780d 100644 --- a/src/core/include/mp-units/ext/type_traits.h +++ b/src/core/include/mp-units/ext/type_traits.h @@ -106,19 +106,24 @@ template requires { typename std::indirectly_readable_traits::value_type; } using wrapped_type_t = std::indirectly_readable_traits::value_type; +namespace detail { + template -struct value_type { +struct value_type_impl { using type = T; }; template requires requires { typename wrapped_type_t; } -struct value_type { +struct value_type_impl { using type = wrapped_type_t; }; +} // namespace detail + template -using value_type_t = value_type::type; + requires std::is_object_v +using value_type_t = detail::value_type_impl::type; template concept one_of = (false || ... || std::same_as);