diff --git a/include/proxy/v4/proxy.h b/include/proxy/v4/proxy.h index 73397ab..b4f5495 100644 --- a/include/proxy/v4/proxy.h +++ b/include/proxy/v4/proxy.h @@ -465,10 +465,9 @@ template using accessor_t = typename a11y_traits::type; template -struct conv_traits_impl : inapplicable_traits {}; -template - requires(overload_traits>::applicable && ...) -struct conv_traits_impl : applicable_traits { +struct conv_traits_impl { + static_assert((overload_traits>::applicable && + ...)); using meta = composite_meta>...>; @@ -727,10 +726,7 @@ template struct basic_facade_traits : applicable_traits {}; template -struct facade_conv_traits_impl : inapplicable_traits {}; -template - requires(conv_traits::applicable && ...) -struct facade_conv_traits_impl : applicable_traits { +struct facade_conv_traits_impl { using conv_meta = composite_t, typename conv_traits::meta...>; using conv_indirect_accessor = @@ -772,11 +768,7 @@ struct facade_refl_traits_impl { (refl_traits::template applicable_ptr

&& ...); }; template -struct facade_traits : inapplicable_traits {}; -template - requires(instantiated_t::applicable) -struct facade_traits +struct facade_traits : instantiated_t, instantiated_t { using meta = composite_t< @@ -913,8 +905,7 @@ add_qualifier_t, Q> } // namespace details template -concept proxiable = facade && details::facade_traits::applicable && - details::ptr_traits

::applicable && +concept proxiable = facade && details::ptr_traits

::applicable && details::facade_traits::template applicable_ptr

; template @@ -967,7 +958,6 @@ template class proxy : public details::facade_traits::direct_accessor, public details::inplace_ptr> { friend struct details::proxy_helper; - static_assert(details::facade_traits::applicable); public: using facade_type = F;