replace std::is_same_v to stdex::same_as concept

This commit is contained in:
BlackMATov
2022-11-09 17:27:55 +07:00
parent 71ec8b6885
commit 40525f45aa
11 changed files with 163 additions and 163 deletions

View File

@@ -12,15 +12,15 @@ namespace meta_hpp::detail
{ {
template < typename T > template < typename T >
inline constexpr bool is_index_family_v = inline constexpr bool is_index_family_v =
std::is_same_v<T, argument_index> || stdex::same_as<T, argument_index> ||
std::is_same_v<T, constructor_index> || stdex::same_as<T, constructor_index> ||
std::is_same_v<T, destructor_index> || stdex::same_as<T, destructor_index> ||
std::is_same_v<T, evalue_index> || stdex::same_as<T, evalue_index> ||
std::is_same_v<T, function_index> || stdex::same_as<T, function_index> ||
std::is_same_v<T, member_index> || stdex::same_as<T, member_index> ||
std::is_same_v<T, method_index> || stdex::same_as<T, method_index> ||
std::is_same_v<T, scope_index> || stdex::same_as<T, scope_index> ||
std::is_same_v<T, variable_index>; stdex::same_as<T, variable_index>;
template < typename T > template < typename T >
concept index_family = is_index_family_v<T>; concept index_family = is_index_family_v<T>;

View File

@@ -12,15 +12,15 @@ namespace meta_hpp::detail
{ {
template < typename T > template < typename T >
inline constexpr bool is_state_family_v = inline constexpr bool is_state_family_v =
std::is_same_v<T, argument> || stdex::same_as<T, argument> ||
std::is_same_v<T, constructor> || stdex::same_as<T, constructor> ||
std::is_same_v<T, destructor> || stdex::same_as<T, destructor> ||
std::is_same_v<T, evalue> || stdex::same_as<T, evalue> ||
std::is_same_v<T, function> || stdex::same_as<T, function> ||
std::is_same_v<T, member> || stdex::same_as<T, member> ||
std::is_same_v<T, method> || stdex::same_as<T, method> ||
std::is_same_v<T, scope> || stdex::same_as<T, scope> ||
std::is_same_v<T, variable>; stdex::same_as<T, variable>;
template < typename T > template < typename T >
concept state_family = is_state_family_v<T>; concept state_family = is_state_family_v<T>;

View File

@@ -12,20 +12,20 @@ namespace meta_hpp::detail
{ {
template < typename T > template < typename T >
inline constexpr bool is_type_family_v = inline constexpr bool is_type_family_v =
std::is_same_v<T, any_type> || stdex::same_as<T, any_type> ||
std::is_same_v<T, array_type> || stdex::same_as<T, array_type> ||
std::is_same_v<T, class_type> || stdex::same_as<T, class_type> ||
std::is_same_v<T, constructor_type> || stdex::same_as<T, constructor_type> ||
std::is_same_v<T, destructor_type> || stdex::same_as<T, destructor_type> ||
std::is_same_v<T, enum_type> || stdex::same_as<T, enum_type> ||
std::is_same_v<T, function_type> || stdex::same_as<T, function_type> ||
std::is_same_v<T, member_type> || stdex::same_as<T, member_type> ||
std::is_same_v<T, method_type> || stdex::same_as<T, method_type> ||
std::is_same_v<T, nullptr_type> || stdex::same_as<T, nullptr_type> ||
std::is_same_v<T, number_type> || stdex::same_as<T, number_type> ||
std::is_same_v<T, pointer_type> || stdex::same_as<T, pointer_type> ||
std::is_same_v<T, reference_type> || stdex::same_as<T, reference_type> ||
std::is_same_v<T, void_type>; stdex::same_as<T, void_type>;
template < typename T > template < typename T >
concept type_family = is_type_family_v<T>; concept type_family = is_type_family_v<T>;

View File

@@ -13,11 +13,11 @@ namespace meta_hpp::detail
{ {
template < typename T > template < typename T >
inline constexpr bool is_uvalue_kind_v = inline constexpr bool is_uvalue_kind_v =
std::is_same_v<T, uarg_base> || stdex::same_as<T, uarg_base> ||
std::is_same_v<T, uarg> || stdex::same_as<T, uarg> ||
std::is_same_v<T, uinst_base> || stdex::same_as<T, uinst_base> ||
std::is_same_v<T, uinst> || stdex::same_as<T, uinst> ||
std::is_same_v<T, uvalue>; stdex::same_as<T, uvalue>;
template < typename T > template < typename T >
concept uvalue_kind = is_uvalue_kind_v<T>; concept uvalue_kind = is_uvalue_kind_v<T>;

View File

@@ -52,33 +52,33 @@ namespace meta_hpp
template < typename Policy > template < typename Policy >
inline constexpr bool is_constructor_policy_v = inline constexpr bool is_constructor_policy_v =
std::is_same_v<Policy, constructor_policy::as_object> || stdex::same_as<Policy, constructor_policy::as_object> ||
std::is_same_v<Policy, constructor_policy::as_raw_pointer> || stdex::same_as<Policy, constructor_policy::as_raw_pointer> ||
std::is_same_v<Policy, constructor_policy::as_shared_pointer>; stdex::same_as<Policy, constructor_policy::as_shared_pointer>;
template < typename Policy > template < typename Policy >
inline constexpr bool is_function_policy_v = inline constexpr bool is_function_policy_v =
std::is_same_v<Policy, function_policy::as_copy> || stdex::same_as<Policy, function_policy::as_copy> ||
std::is_same_v<Policy, function_policy::discard_return> || stdex::same_as<Policy, function_policy::discard_return> ||
std::is_same_v<Policy, function_policy::return_reference_as_pointer>; stdex::same_as<Policy, function_policy::return_reference_as_pointer>;
template < typename Policy > template < typename Policy >
inline constexpr bool is_member_policy_v = inline constexpr bool is_member_policy_v =
std::is_same_v<Policy, member_policy::as_copy> || stdex::same_as<Policy, member_policy::as_copy> ||
std::is_same_v<Policy, member_policy::as_pointer> || stdex::same_as<Policy, member_policy::as_pointer> ||
std::is_same_v<Policy, member_policy::as_reference_wrapper>; stdex::same_as<Policy, member_policy::as_reference_wrapper>;
template < typename Policy > template < typename Policy >
inline constexpr bool is_method_policy_v = inline constexpr bool is_method_policy_v =
std::is_same_v<Policy, method_policy::as_copy> || stdex::same_as<Policy, method_policy::as_copy> ||
std::is_same_v<Policy, method_policy::discard_return> || stdex::same_as<Policy, method_policy::discard_return> ||
std::is_same_v<Policy, method_policy::return_reference_as_pointer>; stdex::same_as<Policy, method_policy::return_reference_as_pointer>;
template < typename Policy > template < typename Policy >
inline constexpr bool is_variable_policy_v = inline constexpr bool is_variable_policy_v =
std::is_same_v<Policy, variable_policy::as_copy> || stdex::same_as<Policy, variable_policy::as_copy> ||
std::is_same_v<Policy, variable_policy::as_pointer> || stdex::same_as<Policy, variable_policy::as_pointer> ||
std::is_same_v<Policy, variable_policy::as_reference_wrapper>; stdex::same_as<Policy, variable_policy::as_reference_wrapper>;
template < typename Policy > template < typename Policy >
concept constructor_policy_kind = is_constructor_policy_v<Policy>; concept constructor_policy_kind = is_constructor_policy_v<Policy>;

View File

@@ -12,7 +12,7 @@
namespace meta_hpp::detail namespace meta_hpp::detail
{ {
template < typename T > template < typename T >
inline constexpr bool is_value_kind_v = std::is_same_v<T, uvalue>; inline constexpr bool is_value_kind_v = stdex::same_as<T, uvalue>;
template < typename T > template < typename T >
concept value_kind = is_value_kind_v<T>; concept value_kind = is_value_kind_v<T>;

View File

@@ -329,7 +329,7 @@ namespace meta_hpp
template < typename T > template < typename T >
auto uvalue::get_as() -> std::conditional_t<detail::pointer_kind<T>, T, T&> { auto uvalue::get_as() -> std::conditional_t<detail::pointer_kind<T>, T, T&> {
static_assert(std::is_same_v<T, std::decay_t<T>>); static_assert(stdex::same_as<T, std::decay_t<T>>);
if constexpr ( detail::pointer_kind<T> ) { if constexpr ( detail::pointer_kind<T> ) {
if ( T ptr = try_get_as<T>(); ptr || get_type().is_nullptr() ) { if ( T ptr = try_get_as<T>(); ptr || get_type().is_nullptr() ) {
@@ -346,7 +346,7 @@ namespace meta_hpp
template < typename T > template < typename T >
auto uvalue::get_as() const -> std::conditional_t<detail::pointer_kind<T>, T, const T&> { auto uvalue::get_as() const -> std::conditional_t<detail::pointer_kind<T>, T, const T&> {
static_assert(std::is_same_v<T, std::decay_t<T>>); static_assert(stdex::same_as<T, std::decay_t<T>>);
if constexpr ( detail::pointer_kind<T> ) { if constexpr ( detail::pointer_kind<T> ) {
if ( T ptr = try_get_as<T>(); ptr || get_type().is_nullptr() ) { if ( T ptr = try_get_as<T>(); ptr || get_type().is_nullptr() ) {
@@ -364,7 +364,7 @@ namespace meta_hpp
template < typename T > template < typename T >
// NOLINTNEXTLINE(*-cognitive-complexity) // NOLINTNEXTLINE(*-cognitive-complexity)
auto uvalue::try_get_as() noexcept -> std::conditional_t<detail::pointer_kind<T>, T, T*> { auto uvalue::try_get_as() noexcept -> std::conditional_t<detail::pointer_kind<T>, T, T*> {
static_assert(std::is_same_v<T, std::decay_t<T>>); static_assert(stdex::same_as<T, std::decay_t<T>>);
const any_type& from_type = get_type(); const any_type& from_type = get_type();
const any_type& to_type = resolve_type<T>(); const any_type& to_type = resolve_type<T>();
@@ -429,7 +429,7 @@ namespace meta_hpp
template < typename T > template < typename T >
// NOLINTNEXTLINE(*-cognitive-complexity) // NOLINTNEXTLINE(*-cognitive-complexity)
auto uvalue::try_get_as() const noexcept -> std::conditional_t<detail::pointer_kind<T>, T, const T*> { auto uvalue::try_get_as() const noexcept -> std::conditional_t<detail::pointer_kind<T>, T, const T*> {
static_assert(std::is_same_v<T, std::decay_t<T>>); static_assert(stdex::same_as<T, std::decay_t<T>>);
const any_type& from_type = get_type(); const any_type& from_type = get_type();
const any_type& to_type = resolve_type<T>(); const any_type& to_type = resolve_type<T>();

View File

@@ -905,20 +905,20 @@ namespace meta_hpp::detail
{ {
template < typename T > template < typename T >
inline constexpr bool is_type_family_v = inline constexpr bool is_type_family_v =
std::is_same_v<T, any_type> || stdex::same_as<T, any_type> ||
std::is_same_v<T, array_type> || stdex::same_as<T, array_type> ||
std::is_same_v<T, class_type> || stdex::same_as<T, class_type> ||
std::is_same_v<T, constructor_type> || stdex::same_as<T, constructor_type> ||
std::is_same_v<T, destructor_type> || stdex::same_as<T, destructor_type> ||
std::is_same_v<T, enum_type> || stdex::same_as<T, enum_type> ||
std::is_same_v<T, function_type> || stdex::same_as<T, function_type> ||
std::is_same_v<T, member_type> || stdex::same_as<T, member_type> ||
std::is_same_v<T, method_type> || stdex::same_as<T, method_type> ||
std::is_same_v<T, nullptr_type> || stdex::same_as<T, nullptr_type> ||
std::is_same_v<T, number_type> || stdex::same_as<T, number_type> ||
std::is_same_v<T, pointer_type> || stdex::same_as<T, pointer_type> ||
std::is_same_v<T, reference_type> || stdex::same_as<T, reference_type> ||
std::is_same_v<T, void_type>; stdex::same_as<T, void_type>;
template < typename T > template < typename T >
concept type_family = is_type_family_v<T>; concept type_family = is_type_family_v<T>;
@@ -2022,15 +2022,15 @@ namespace meta_hpp::detail
{ {
template < typename T > template < typename T >
inline constexpr bool is_index_family_v = inline constexpr bool is_index_family_v =
std::is_same_v<T, argument_index> || stdex::same_as<T, argument_index> ||
std::is_same_v<T, constructor_index> || stdex::same_as<T, constructor_index> ||
std::is_same_v<T, destructor_index> || stdex::same_as<T, destructor_index> ||
std::is_same_v<T, evalue_index> || stdex::same_as<T, evalue_index> ||
std::is_same_v<T, function_index> || stdex::same_as<T, function_index> ||
std::is_same_v<T, member_index> || stdex::same_as<T, member_index> ||
std::is_same_v<T, method_index> || stdex::same_as<T, method_index> ||
std::is_same_v<T, scope_index> || stdex::same_as<T, scope_index> ||
std::is_same_v<T, variable_index>; stdex::same_as<T, variable_index>;
template < typename T > template < typename T >
concept index_family = is_index_family_v<T>; concept index_family = is_index_family_v<T>;
@@ -2216,7 +2216,7 @@ namespace std
namespace meta_hpp::detail namespace meta_hpp::detail
{ {
template < typename T > template < typename T >
inline constexpr bool is_value_kind_v = std::is_same_v<T, uvalue>; inline constexpr bool is_value_kind_v = stdex::same_as<T, uvalue>;
template < typename T > template < typename T >
concept value_kind = is_value_kind_v<T>; concept value_kind = is_value_kind_v<T>;
@@ -2306,15 +2306,15 @@ namespace meta_hpp::detail
{ {
template < typename T > template < typename T >
inline constexpr bool is_state_family_v = inline constexpr bool is_state_family_v =
std::is_same_v<T, argument> || stdex::same_as<T, argument> ||
std::is_same_v<T, constructor> || stdex::same_as<T, constructor> ||
std::is_same_v<T, destructor> || stdex::same_as<T, destructor> ||
std::is_same_v<T, evalue> || stdex::same_as<T, evalue> ||
std::is_same_v<T, function> || stdex::same_as<T, function> ||
std::is_same_v<T, member> || stdex::same_as<T, member> ||
std::is_same_v<T, method> || stdex::same_as<T, method> ||
std::is_same_v<T, scope> || stdex::same_as<T, scope> ||
std::is_same_v<T, variable>; stdex::same_as<T, variable>;
template < typename T > template < typename T >
concept state_family = is_state_family_v<T>; concept state_family = is_state_family_v<T>;
@@ -2364,33 +2364,33 @@ namespace meta_hpp
template < typename Policy > template < typename Policy >
inline constexpr bool is_constructor_policy_v = inline constexpr bool is_constructor_policy_v =
std::is_same_v<Policy, constructor_policy::as_object> || stdex::same_as<Policy, constructor_policy::as_object> ||
std::is_same_v<Policy, constructor_policy::as_raw_pointer> || stdex::same_as<Policy, constructor_policy::as_raw_pointer> ||
std::is_same_v<Policy, constructor_policy::as_shared_pointer>; stdex::same_as<Policy, constructor_policy::as_shared_pointer>;
template < typename Policy > template < typename Policy >
inline constexpr bool is_function_policy_v = inline constexpr bool is_function_policy_v =
std::is_same_v<Policy, function_policy::as_copy> || stdex::same_as<Policy, function_policy::as_copy> ||
std::is_same_v<Policy, function_policy::discard_return> || stdex::same_as<Policy, function_policy::discard_return> ||
std::is_same_v<Policy, function_policy::return_reference_as_pointer>; stdex::same_as<Policy, function_policy::return_reference_as_pointer>;
template < typename Policy > template < typename Policy >
inline constexpr bool is_member_policy_v = inline constexpr bool is_member_policy_v =
std::is_same_v<Policy, member_policy::as_copy> || stdex::same_as<Policy, member_policy::as_copy> ||
std::is_same_v<Policy, member_policy::as_pointer> || stdex::same_as<Policy, member_policy::as_pointer> ||
std::is_same_v<Policy, member_policy::as_reference_wrapper>; stdex::same_as<Policy, member_policy::as_reference_wrapper>;
template < typename Policy > template < typename Policy >
inline constexpr bool is_method_policy_v = inline constexpr bool is_method_policy_v =
std::is_same_v<Policy, method_policy::as_copy> || stdex::same_as<Policy, method_policy::as_copy> ||
std::is_same_v<Policy, method_policy::discard_return> || stdex::same_as<Policy, method_policy::discard_return> ||
std::is_same_v<Policy, method_policy::return_reference_as_pointer>; stdex::same_as<Policy, method_policy::return_reference_as_pointer>;
template < typename Policy > template < typename Policy >
inline constexpr bool is_variable_policy_v = inline constexpr bool is_variable_policy_v =
std::is_same_v<Policy, variable_policy::as_copy> || stdex::same_as<Policy, variable_policy::as_copy> ||
std::is_same_v<Policy, variable_policy::as_pointer> || stdex::same_as<Policy, variable_policy::as_pointer> ||
std::is_same_v<Policy, variable_policy::as_reference_wrapper>; stdex::same_as<Policy, variable_policy::as_reference_wrapper>;
template < typename Policy > template < typename Policy >
concept constructor_policy_kind = is_constructor_policy_v<Policy>; concept constructor_policy_kind = is_constructor_policy_v<Policy>;
@@ -4632,11 +4632,11 @@ namespace meta_hpp::detail
{ {
template < typename T > template < typename T >
inline constexpr bool is_uvalue_kind_v = inline constexpr bool is_uvalue_kind_v =
std::is_same_v<T, uarg_base> || stdex::same_as<T, uarg_base> ||
std::is_same_v<T, uarg> || stdex::same_as<T, uarg> ||
std::is_same_v<T, uinst_base> || stdex::same_as<T, uinst_base> ||
std::is_same_v<T, uinst> || stdex::same_as<T, uinst> ||
std::is_same_v<T, uvalue>; stdex::same_as<T, uvalue>;
template < typename T > template < typename T >
concept uvalue_kind = is_uvalue_kind_v<T>; concept uvalue_kind = is_uvalue_kind_v<T>;
@@ -8296,7 +8296,7 @@ namespace meta_hpp
template < typename T > template < typename T >
auto uvalue::get_as() -> std::conditional_t<detail::pointer_kind<T>, T, T&> { auto uvalue::get_as() -> std::conditional_t<detail::pointer_kind<T>, T, T&> {
static_assert(std::is_same_v<T, std::decay_t<T>>); static_assert(stdex::same_as<T, std::decay_t<T>>);
if constexpr ( detail::pointer_kind<T> ) { if constexpr ( detail::pointer_kind<T> ) {
if ( T ptr = try_get_as<T>(); ptr || get_type().is_nullptr() ) { if ( T ptr = try_get_as<T>(); ptr || get_type().is_nullptr() ) {
@@ -8313,7 +8313,7 @@ namespace meta_hpp
template < typename T > template < typename T >
auto uvalue::get_as() const -> std::conditional_t<detail::pointer_kind<T>, T, const T&> { auto uvalue::get_as() const -> std::conditional_t<detail::pointer_kind<T>, T, const T&> {
static_assert(std::is_same_v<T, std::decay_t<T>>); static_assert(stdex::same_as<T, std::decay_t<T>>);
if constexpr ( detail::pointer_kind<T> ) { if constexpr ( detail::pointer_kind<T> ) {
if ( T ptr = try_get_as<T>(); ptr || get_type().is_nullptr() ) { if ( T ptr = try_get_as<T>(); ptr || get_type().is_nullptr() ) {
@@ -8331,7 +8331,7 @@ namespace meta_hpp
template < typename T > template < typename T >
// NOLINTNEXTLINE(*-cognitive-complexity) // NOLINTNEXTLINE(*-cognitive-complexity)
auto uvalue::try_get_as() noexcept -> std::conditional_t<detail::pointer_kind<T>, T, T*> { auto uvalue::try_get_as() noexcept -> std::conditional_t<detail::pointer_kind<T>, T, T*> {
static_assert(std::is_same_v<T, std::decay_t<T>>); static_assert(stdex::same_as<T, std::decay_t<T>>);
const any_type& from_type = get_type(); const any_type& from_type = get_type();
const any_type& to_type = resolve_type<T>(); const any_type& to_type = resolve_type<T>();
@@ -8396,7 +8396,7 @@ namespace meta_hpp
template < typename T > template < typename T >
// NOLINTNEXTLINE(*-cognitive-complexity) // NOLINTNEXTLINE(*-cognitive-complexity)
auto uvalue::try_get_as() const noexcept -> std::conditional_t<detail::pointer_kind<T>, T, const T*> { auto uvalue::try_get_as() const noexcept -> std::conditional_t<detail::pointer_kind<T>, T, const T*> {
static_assert(std::is_same_v<T, std::decay_t<T>>); static_assert(stdex::same_as<T, std::decay_t<T>>);
const any_type& from_type = get_type(); const any_type& from_type = get_type();
const any_type& to_type = resolve_type<T>(); const any_type& to_type = resolve_type<T>();

View File

@@ -57,28 +57,28 @@ TEST_CASE("meta/meta_utilities/detail") {
} }
SUBCASE("cvref_traits::copy_to") { SUBCASE("cvref_traits::copy_to") {
static_assert(std::is_same_v<meta::detail::cvref_traits<float>::copy_to<int>, int>); static_assert(meta::stdex::same_as<meta::detail::cvref_traits<float>::copy_to<int>, int>);
static_assert(std::is_same_v<meta::detail::cvref_traits<const float>::copy_to<int>, const int>); static_assert(meta::stdex::same_as<meta::detail::cvref_traits<const float>::copy_to<int>, const int>);
static_assert(std::is_same_v<meta::detail::cvref_traits<const volatile float>::copy_to<int>, const volatile int>); static_assert(meta::stdex::same_as<meta::detail::cvref_traits<const volatile float>::copy_to<int>, const volatile int>);
static_assert(std::is_same_v<meta::detail::cvref_traits<float&>::copy_to<int>, int&>); static_assert(meta::stdex::same_as<meta::detail::cvref_traits<float&>::copy_to<int>, int&>);
static_assert(std::is_same_v<meta::detail::cvref_traits<const float&>::copy_to<int>, const int&>); static_assert(meta::stdex::same_as<meta::detail::cvref_traits<const float&>::copy_to<int>, const int&>);
static_assert(std::is_same_v<meta::detail::cvref_traits<volatile float&>::copy_to<int>, volatile int&>); static_assert(meta::stdex::same_as<meta::detail::cvref_traits<volatile float&>::copy_to<int>, volatile int&>);
static_assert(std::is_same_v<meta::detail::cvref_traits<const volatile float&&>::copy_to<int>, const volatile int&&>); static_assert(meta::stdex::same_as<meta::detail::cvref_traits<const volatile float&&>::copy_to<int>, const volatile int&&>);
static_assert(std::is_same_v<meta::detail::cvref_traits<float>::copy_to<int&>, int>); static_assert(meta::stdex::same_as<meta::detail::cvref_traits<float>::copy_to<int&>, int>);
static_assert(std::is_same_v<meta::detail::cvref_traits<const float>::copy_to<int&>, const int>); static_assert(meta::stdex::same_as<meta::detail::cvref_traits<const float>::copy_to<int&>, const int>);
static_assert(std::is_same_v<meta::detail::cvref_traits<const volatile float>::copy_to<int&>, const volatile int>); static_assert(meta::stdex::same_as<meta::detail::cvref_traits<const volatile float>::copy_to<int&>, const volatile int>);
static_assert(std::is_same_v<meta::detail::cvref_traits<float&>::copy_to<int&>, int&>); static_assert(meta::stdex::same_as<meta::detail::cvref_traits<float&>::copy_to<int&>, int&>);
static_assert(std::is_same_v<meta::detail::cvref_traits<const float&>::copy_to<int&>, const int&>); static_assert(meta::stdex::same_as<meta::detail::cvref_traits<const float&>::copy_to<int&>, const int&>);
static_assert(std::is_same_v<meta::detail::cvref_traits<volatile float&>::copy_to<int&>, volatile int&>); static_assert(meta::stdex::same_as<meta::detail::cvref_traits<volatile float&>::copy_to<int&>, volatile int&>);
static_assert(std::is_same_v<meta::detail::cvref_traits<const volatile float&&>::copy_to<int&>, const volatile int&&>); static_assert(meta::stdex::same_as<meta::detail::cvref_traits<const volatile float&&>::copy_to<int&>, const volatile int&&>);
static_assert(std::is_same_v<meta::detail::cvref_traits<float>::copy_to<const volatile int&&>, int>); static_assert(meta::stdex::same_as<meta::detail::cvref_traits<float>::copy_to<const volatile int&&>, int>);
static_assert(std::is_same_v<meta::detail::cvref_traits<const float>::copy_to<const volatile int&&>, const int>); static_assert(meta::stdex::same_as<meta::detail::cvref_traits<const float>::copy_to<const volatile int&&>, const int>);
static_assert(std::is_same_v<meta::detail::cvref_traits<const volatile float>::copy_to<const volatile int&&>, const volatile int>); static_assert(meta::stdex::same_as<meta::detail::cvref_traits<const volatile float>::copy_to<const volatile int&&>, const volatile int>);
static_assert(std::is_same_v<meta::detail::cvref_traits<float&>::copy_to<const volatile int&&>, int&>); static_assert(meta::stdex::same_as<meta::detail::cvref_traits<float&>::copy_to<const volatile int&&>, int&>);
static_assert(std::is_same_v<meta::detail::cvref_traits<const float&>::copy_to<const volatile int&&>, const int&>); static_assert(meta::stdex::same_as<meta::detail::cvref_traits<const float&>::copy_to<const volatile int&&>, const int&>);
static_assert(std::is_same_v<meta::detail::cvref_traits<volatile float&>::copy_to<const volatile int&&>, volatile int&>); static_assert(meta::stdex::same_as<meta::detail::cvref_traits<volatile float&>::copy_to<const volatile int&&>, volatile int&>);
static_assert(std::is_same_v<meta::detail::cvref_traits<const volatile float&&>::copy_to<const volatile int&&>, const volatile int&&>); static_assert(meta::stdex::same_as<meta::detail::cvref_traits<const volatile float&&>::copy_to<const volatile int&&>, const volatile int&&>);
} }
} }

View File

@@ -90,20 +90,20 @@ TEST_CASE("meta/meta_utilities/value4/get_type") {
TEST_CASE("meta/meta_utilities/value4/get_as") { TEST_CASE("meta/meta_utilities/value4/get_as") {
namespace meta = meta_hpp; namespace meta = meta_hpp;
static_assert(std::is_same_v<decltype(std::declval<meta::uvalue&>().get_as<derived>()), derived&>); static_assert(meta::stdex::same_as<decltype(std::declval<meta::uvalue&>().get_as<derived>()), derived&>);
static_assert(std::is_same_v<decltype(std::declval<meta::uvalue&&>().get_as<derived>()), derived&>); static_assert(meta::stdex::same_as<decltype(std::declval<meta::uvalue&&>().get_as<derived>()), derived&>);
static_assert(std::is_same_v<decltype(std::declval<const meta::uvalue&>().get_as<derived>()), const derived&>); static_assert(meta::stdex::same_as<decltype(std::declval<const meta::uvalue&>().get_as<derived>()), const derived&>);
static_assert(std::is_same_v<decltype(std::declval<const meta::uvalue&&>().get_as<derived>()), const derived&>); static_assert(meta::stdex::same_as<decltype(std::declval<const meta::uvalue&&>().get_as<derived>()), const derived&>);
static_assert(std::is_same_v<decltype(std::declval<meta::uvalue&>().get_as<derived*>()), derived*>); static_assert(meta::stdex::same_as<decltype(std::declval<meta::uvalue&>().get_as<derived*>()), derived*>);
static_assert(std::is_same_v<decltype(std::declval<meta::uvalue&&>().get_as<derived*>()), derived*>); static_assert(meta::stdex::same_as<decltype(std::declval<meta::uvalue&&>().get_as<derived*>()), derived*>);
static_assert(std::is_same_v<decltype(std::declval<const meta::uvalue&>().get_as<derived*>()), derived*>); static_assert(meta::stdex::same_as<decltype(std::declval<const meta::uvalue&>().get_as<derived*>()), derived*>);
static_assert(std::is_same_v<decltype(std::declval<const meta::uvalue&&>().get_as<derived*>()), derived*>); static_assert(meta::stdex::same_as<decltype(std::declval<const meta::uvalue&&>().get_as<derived*>()), derived*>);
static_assert(std::is_same_v<decltype(std::declval<meta::uvalue&>().get_as<const derived*>()), const derived*>); static_assert(meta::stdex::same_as<decltype(std::declval<meta::uvalue&>().get_as<const derived*>()), const derived*>);
static_assert(std::is_same_v<decltype(std::declval<meta::uvalue&&>().get_as<const derived*>()), const derived*>); static_assert(meta::stdex::same_as<decltype(std::declval<meta::uvalue&&>().get_as<const derived*>()), const derived*>);
static_assert(std::is_same_v<decltype(std::declval<const meta::uvalue&>().get_as<const derived*>()), const derived*>); static_assert(meta::stdex::same_as<decltype(std::declval<const meta::uvalue&>().get_as<const derived*>()), const derived*>);
static_assert(std::is_same_v<decltype(std::declval<const meta::uvalue&&>().get_as<const derived*>()), const derived*>); static_assert(meta::stdex::same_as<decltype(std::declval<const meta::uvalue&&>().get_as<const derived*>()), const derived*>);
SUBCASE("derived to derived") { SUBCASE("derived to derived") {
{ {
@@ -209,20 +209,20 @@ TEST_CASE("meta/meta_utilities/value4/get_as") {
TEST_CASE("meta/meta_utilities/value4/try_get_as") { TEST_CASE("meta/meta_utilities/value4/try_get_as") {
namespace meta = meta_hpp; namespace meta = meta_hpp;
static_assert(std::is_same_v<decltype(std::declval<meta::uvalue&>().try_get_as<derived>()), derived*>); static_assert(meta::stdex::same_as<decltype(std::declval<meta::uvalue&>().try_get_as<derived>()), derived*>);
static_assert(std::is_same_v<decltype(std::declval<meta::uvalue&&>().try_get_as<derived>()), derived*>); static_assert(meta::stdex::same_as<decltype(std::declval<meta::uvalue&&>().try_get_as<derived>()), derived*>);
static_assert(std::is_same_v<decltype(std::declval<const meta::uvalue&>().try_get_as<derived>()), const derived*>); static_assert(meta::stdex::same_as<decltype(std::declval<const meta::uvalue&>().try_get_as<derived>()), const derived*>);
static_assert(std::is_same_v<decltype(std::declval<const meta::uvalue&&>().try_get_as<derived>()), const derived*>); static_assert(meta::stdex::same_as<decltype(std::declval<const meta::uvalue&&>().try_get_as<derived>()), const derived*>);
static_assert(std::is_same_v<decltype(std::declval<meta::uvalue&>().try_get_as<derived*>()), derived*>); static_assert(meta::stdex::same_as<decltype(std::declval<meta::uvalue&>().try_get_as<derived*>()), derived*>);
static_assert(std::is_same_v<decltype(std::declval<meta::uvalue&&>().try_get_as<derived*>()), derived*>); static_assert(meta::stdex::same_as<decltype(std::declval<meta::uvalue&&>().try_get_as<derived*>()), derived*>);
static_assert(std::is_same_v<decltype(std::declval<const meta::uvalue&>().try_get_as<derived*>()), derived*>); static_assert(meta::stdex::same_as<decltype(std::declval<const meta::uvalue&>().try_get_as<derived*>()), derived*>);
static_assert(std::is_same_v<decltype(std::declval<const meta::uvalue&&>().try_get_as<derived*>()), derived*>); static_assert(meta::stdex::same_as<decltype(std::declval<const meta::uvalue&&>().try_get_as<derived*>()), derived*>);
static_assert(std::is_same_v<decltype(std::declval<meta::uvalue&>().try_get_as<const derived*>()), const derived*>); static_assert(meta::stdex::same_as<decltype(std::declval<meta::uvalue&>().try_get_as<const derived*>()), const derived*>);
static_assert(std::is_same_v<decltype(std::declval<meta::uvalue&&>().try_get_as<const derived*>()), const derived*>); static_assert(meta::stdex::same_as<decltype(std::declval<meta::uvalue&&>().try_get_as<const derived*>()), const derived*>);
static_assert(std::is_same_v<decltype(std::declval<const meta::uvalue&>().try_get_as<const derived*>()), const derived*>); static_assert(meta::stdex::same_as<decltype(std::declval<const meta::uvalue&>().try_get_as<const derived*>()), const derived*>);
static_assert(std::is_same_v<decltype(std::declval<const meta::uvalue&&>().try_get_as<const derived*>()), const derived*>); static_assert(meta::stdex::same_as<decltype(std::declval<const meta::uvalue&&>().try_get_as<const derived*>()), const derived*>);
SUBCASE("derived to derived") { SUBCASE("derived to derived") {
{ {

View File

@@ -104,16 +104,16 @@ TEST_CASE("meta/meta_utilities/value") {
ivec2::copy_constructor_counter = 0; ivec2::copy_constructor_counter = 0;
SUBCASE("cast types") { SUBCASE("cast types") {
static_assert(std::is_same_v< static_assert(meta::stdex::same_as<
decltype(std::declval<meta::uvalue&>().get_as<ivec2>()), decltype(std::declval<meta::uvalue&>().get_as<ivec2>()),
ivec2&>); ivec2&>);
static_assert(std::is_same_v< static_assert(meta::stdex::same_as<
decltype(std::declval<meta::uvalue&&>().get_as<ivec2>()), decltype(std::declval<meta::uvalue&&>().get_as<ivec2>()),
ivec2&>); ivec2&>);
static_assert(std::is_same_v< static_assert(meta::stdex::same_as<
decltype(std::declval<const meta::uvalue&>().get_as<ivec2>()), decltype(std::declval<const meta::uvalue&>().get_as<ivec2>()),
const ivec2&>); const ivec2&>);
static_assert(std::is_same_v< static_assert(meta::stdex::same_as<
decltype(std::declval<const meta::uvalue&&>().get_as<ivec2>()), decltype(std::declval<const meta::uvalue&&>().get_as<ivec2>()),
const ivec2&>); const ivec2&>);
} }