diff --git a/include/stdx/concepts.hpp b/include/stdx/concepts.hpp index 17414b9..ea09f8b 100644 --- a/include/stdx/concepts.hpp +++ b/include/stdx/concepts.hpp @@ -35,8 +35,13 @@ concept derived_from = std::is_base_of_v and std::is_convertible_v; +namespace detail { +template +concept same_as_helper = std::is_same_v; +} + template -concept same_as = std::is_same_v and std::is_same_v; +concept same_as = detail::same_as_helper and detail::same_as_helper; template constexpr auto same_any = (... or same_as); @@ -45,8 +50,7 @@ template constexpr auto same_none = not same_any; template -concept same_as_unqualified = - is_same_unqualified_v and is_same_unqualified_v; +concept same_as_unqualified = same_as, remove_cvref_t>; template concept equality_comparable = requires(T const &t) { @@ -133,8 +137,7 @@ template typename TypeTrait> concept has_trait = TypeTrait::value; template -concept same_as_unqualified = - is_same_unqualified_v and is_same_unqualified_v; +concept same_as_unqualified = same_as, remove_cvref_t>; template concept structural = is_structural_v;