From 4f1897e8647b4cf70a18bd0ca90fa96dd22f6474 Mon Sep 17 00:00:00 2001 From: skypjack Date: Wed, 1 Apr 2026 09:31:13 +0200 Subject: [PATCH] stl: std::declval --- src/entt/container/dense_map.hpp | 8 ++++---- src/entt/container/table.hpp | 2 +- src/entt/core/tuple.hpp | 4 ++-- src/entt/core/type_traits.hpp | 6 +++--- src/entt/entity/group.hpp | 6 +++--- src/entt/entity/handle.hpp | 2 +- src/entt/entity/registry.hpp | 2 +- src/entt/entity/storage.hpp | 2 +- src/entt/entity/view.hpp | 8 ++++---- src/entt/meta/container.hpp | 2 +- src/entt/meta/meta.hpp | 4 ++-- src/entt/meta/utility.hpp | 2 +- src/entt/poly/poly.hpp | 2 +- src/entt/signal/delegate.hpp | 2 +- src/entt/stl/utility.hpp | 1 + 15 files changed, 27 insertions(+), 26 deletions(-) diff --git a/src/entt/container/dense_map.hpp b/src/entt/container/dense_map.hpp index 1ab1cbff4..803a63b4c 100644 --- a/src/entt/container/dense_map.hpp +++ b/src/entt/container/dense_map.hpp @@ -61,8 +61,8 @@ class dense_map_iterator final { friend class dense_map_iterator; static_assert(std::is_pointer_v, "Not a pointer type"); - using first_type = decltype(std::as_const(std::declval()->element.first)); - using second_type = decltype((std::declval()->element.second)); + using first_type = decltype(std::as_const(stl::declval()->element.first)); + using second_type = decltype((stl::declval()->element.second)); public: using value_type = std::pair; @@ -156,8 +156,8 @@ class dense_map_local_iterator final { friend class dense_map_local_iterator; static_assert(std::is_pointer_v, "Not a pointer type"); - using first_type = decltype(std::as_const(std::declval()->element.first)); - using second_type = decltype((std::declval()->element.second)); + using first_type = decltype(std::as_const(stl::declval()->element.first)); + using second_type = decltype((stl::declval()->element.second)); public: using value_type = std::pair; diff --git a/src/entt/container/table.hpp b/src/entt/container/table.hpp index 49a451292..eed5c5c66 100644 --- a/src/entt/container/table.hpp +++ b/src/entt/container/table.hpp @@ -21,7 +21,7 @@ class table_iterator { friend class table_iterator; public: - using value_type = decltype(stl::forward_as_tuple(*std::declval()...)); + using value_type = decltype(stl::forward_as_tuple(*stl::declval()...)); using pointer = input_iterator_pointer; using reference = value_type; using difference_type = std::ptrdiff_t; diff --git a/src/entt/core/tuple.hpp b/src/entt/core/tuple.hpp index 994009243..d19f8c600 100644 --- a/src/entt/core/tuple.hpp +++ b/src/entt/core/tuple.hpp @@ -67,13 +67,13 @@ struct forward_apply: private Func { * @return Return value of the underlying function, if any. */ template - constexpr decltype(auto) operator()(Type &&args) noexcept(noexcept(stl::apply(std::declval(), args))) { + constexpr decltype(auto) operator()(Type &&args) noexcept(noexcept(stl::apply(stl::declval(), args))) { return stl::apply(static_cast(*this), std::forward(args)); } /*! @copydoc operator()() */ template - constexpr decltype(auto) operator()(Type &&args) const noexcept(noexcept(stl::apply(std::declval(), args))) { + constexpr decltype(auto) operator()(Type &&args) const noexcept(noexcept(stl::apply(stl::declval(), args))) { return stl::apply(static_cast(*this), std::forward(args)); } }; diff --git a/src/entt/core/type_traits.hpp b/src/entt/core/type_traits.hpp index b621c0df0..3b19de300 100644 --- a/src/entt/core/type_traits.hpp +++ b/src/entt/core/type_traits.hpp @@ -750,7 +750,7 @@ template } template -[[nodiscard]] ENTT_CONSTEVAL auto maybe_equality_comparable(int) -> decltype(std::declval() == std::declval()) { +[[nodiscard]] ENTT_CONSTEVAL auto maybe_equality_comparable(int) -> decltype(stl::declval() == stl::declval()) { return true; } @@ -844,7 +844,7 @@ class member_class { public: /*! @brief The class of the given non-static member object or function. */ - using type = std::remove_pointer_t()))>; + using type = std::remove_pointer_t()))>; }; /** @@ -878,7 +878,7 @@ class nth_argument { public: /*! @brief N-th argument of the _callable_ type. */ - using type = type_list_element_t()))>; + using type = type_list_element_t()))>; }; /** diff --git a/src/entt/entity/group.hpp b/src/entt/entity/group.hpp index 71a23a138..02685dc50 100644 --- a/src/entt/entity/group.hpp +++ b/src/entt/entity/group.hpp @@ -38,7 +38,7 @@ class extended_group_iterator, get_t> { public: using iterator_type = It; - using value_type = decltype(stl::tuple_cat(stl::make_tuple(*std::declval()), std::declval().get_as_tuple({})..., std::declval().get_as_tuple({})...)); + using value_type = decltype(stl::tuple_cat(stl::make_tuple(*stl::declval()), stl::declval().get_as_tuple({})..., stl::declval().get_as_tuple({})...)); using pointer = input_iterator_pointer; using reference = value_type; using difference_type = std::ptrdiff_t; @@ -536,7 +536,7 @@ public: template void each(Func func) const { for(const auto entt: *this) { - if constexpr(is_applicable_v{}, std::declval().get({})))>) { + if constexpr(is_applicable_v{}, stl::declval().get({})))>) { stl::apply(func, stl::tuple_cat(stl::make_tuple(entt), get(entt))); } else { stl::apply(func, get(entt)); @@ -935,7 +935,7 @@ public: template void each(Func func) const { for(auto args: each()) { - if constexpr(is_applicable_v{}, std::declval().get({})))>) { + if constexpr(is_applicable_v{}, stl::declval().get({})))>) { stl::apply(func, args); } else { stl::apply([&func](auto, auto &&...less) { func(std::forward(less)...); }, args); diff --git a/src/entt/entity/handle.hpp b/src/entt/entity/handle.hpp index bd365e8d1..8d0050aa9 100644 --- a/src/entt/entity/handle.hpp +++ b/src/entt/entity/handle.hpp @@ -105,7 +105,7 @@ public: /*! @brief Unsigned integer type. */ using size_type = std::size_t; /*! @brief Iterable handle type. */ - using iterable = iterable_adaptor().storage())::iterator>>; + using iterable = iterable_adaptor().storage())::iterator>>; /*! @brief Constructs an invalid handle. */ basic_handle() noexcept diff --git a/src/entt/entity/registry.hpp b/src/entt/entity/registry.hpp index 536ec0304..b8be6c3f3 100644 --- a/src/entt/entity/registry.hpp +++ b/src/entt/entity/registry.hpp @@ -41,7 +41,7 @@ class registry_storage_iterator final { template friend class registry_storage_iterator; - using mapped_type = std::remove_reference_t()->second)>; + using mapped_type = std::remove_reference_t()->second)>; public: using value_type = std::pair &>; diff --git a/src/entt/entity/storage.hpp b/src/entt/entity/storage.hpp index b51cf7ec6..a945148a1 100644 --- a/src/entt/entity/storage.hpp +++ b/src/entt/entity/storage.hpp @@ -139,7 +139,7 @@ class extended_storage_iterator final { public: using iterator_type = It; - using value_type = decltype(stl::tuple_cat(stl::make_tuple(*std::declval()), stl::forward_as_tuple(*std::declval()...))); + using value_type = decltype(stl::tuple_cat(stl::make_tuple(*stl::declval()), stl::forward_as_tuple(*stl::declval()...))); using pointer = input_iterator_pointer; using reference = value_type; using difference_type = std::ptrdiff_t; diff --git a/src/entt/entity/view.hpp b/src/entt/entity/view.hpp index 6eaed680f..37b4d6049 100644 --- a/src/entt/entity/view.hpp +++ b/src/entt/entity/view.hpp @@ -131,7 +131,7 @@ private: template struct extended_view_iterator final { using iterator_type = It; - using value_type = decltype(stl::tuple_cat(stl::make_tuple(*std::declval()), std::declval().get_as_tuple({})...)); + using value_type = decltype(stl::tuple_cat(stl::make_tuple(*stl::declval()), stl::declval().get_as_tuple({})...)); using pointer = input_iterator_pointer; using reference = value_type; using difference_type = std::ptrdiff_t; @@ -430,7 +430,7 @@ class basic_view, exclude_t> void each(Func func, std::index_sequence) const { for(const auto curr: storage()->each()) { if(const auto entt = std::get<0>(curr); (!internal::tombstone_check_v || (entt != tombstone)) && ((Curr == Index || base_type::pool_at(Index)->contains(entt)) && ...) && base_type::none_of(entt)) { - if constexpr(is_applicable_v{}, std::declval().get({})))>) { + if constexpr(is_applicable_v{}, stl::declval().get({})))>) { stl::apply(func, stl::tuple_cat(stl::make_tuple(entt), dispatch_get(curr)...)); } else { stl::apply(func, stl::tuple_cat(dispatch_get(curr)...)); @@ -918,7 +918,7 @@ public: /*! @brief Reverse iterator type. */ using reverse_iterator = base_type::reverse_iterator; /*! @brief Iterable view type. */ - using iterable = std::conditional_t>, decltype(std::declval().each())>; + using iterable = std::conditional_t>, decltype(stl::declval().each())>; /*! @brief Default constructor to use to create empty, invalid views. */ basic_view() noexcept @@ -1053,7 +1053,7 @@ public: */ template void each(Func func) const { - if constexpr(is_applicable_v{}, std::declval().get({})))>) { + if constexpr(is_applicable_v{}, stl::declval().get({})))>) { for(const auto pack: each()) { stl::apply(func, pack); } diff --git a/src/entt/meta/container.hpp b/src/entt/meta/container.hpp index 7cde20cfe..3ba37d923 100644 --- a/src/entt/meta/container.hpp +++ b/src/entt/meta/container.hpp @@ -49,7 +49,7 @@ concept meta_associative_container_like = requires(Type value) { requires entt::stl::forward_iterator; { value.begin() } -> std::same_as; { value.end() } -> std::same_as; - value.find(std::declval()); + value.find(stl::declval()); }; } // namespace internal diff --git a/src/entt/meta/meta.hpp b/src/entt/meta/meta.hpp index 9f680f3fc..1cf777584 100644 --- a/src/entt/meta/meta.hpp +++ b/src/entt/meta/meta.hpp @@ -187,10 +187,10 @@ class meta_any { if constexpr(!std::is_void_v::element_type>>) { if constexpr(std::is_constructible_v) { if(const auto &pointer_like = any_cast(value.storage); pointer_like) { - static_cast(other)->emplace::dereference(std::declval()))>(adl_meta_pointer_like::dereference(pointer_like)); + static_cast(other)->emplace::dereference(stl::declval()))>(adl_meta_pointer_like::dereference(pointer_like)); } } else { - static_cast(other)->emplace::dereference(std::declval()))>(adl_meta_pointer_like::dereference(any_cast(value.storage))); + static_cast(other)->emplace::dereference(stl::declval()))>(adl_meta_pointer_like::dereference(any_cast(value.storage))); } } } diff --git a/src/entt/meta/utility.hpp b/src/entt/meta/utility.hpp index 5dd16e0ce..55b47e857 100644 --- a/src/entt/meta/utility.hpp +++ b/src/entt/meta/utility.hpp @@ -141,7 +141,7 @@ class meta_function_helper { public: /*! @brief The meta function descriptor of the given function. */ - using type = decltype(get_rid_of_noexcept(std::declval())); + using type = decltype(get_rid_of_noexcept(stl::declval())); }; /** diff --git a/src/entt/poly/poly.hpp b/src/entt/poly/poly.hpp index 77df7359c..a6b8a41e3 100644 --- a/src/entt/poly/poly.hpp +++ b/src/entt/poly/poly.hpp @@ -77,7 +77,7 @@ class poly_vtable { if constexpr(sizeof...(Func) == 0u) { return decltype(make_vtable(typename Concept::template impl{})){}; } else if constexpr((std::is_function_v && ...)) { - return decltype(stl::make_tuple(vtable_entry(std::declval())...)){}; + return decltype(stl::make_tuple(vtable_entry(stl::declval())...)){}; } } diff --git a/src/entt/signal/delegate.hpp b/src/entt/signal/delegate.hpp index f830c7303..adc6667d7 100644 --- a/src/entt/signal/delegate.hpp +++ b/src/entt/signal/delegate.hpp @@ -32,7 +32,7 @@ requires stl::is_member_object_pointer_v auto function_pointer(Type Class::*, Other &&...) -> Type (*)(); template -using function_pointer_t = decltype(function_pointer(std::declval()...)); +using function_pointer_t = decltype(function_pointer(stl::declval()...)); template [[nodiscard]] ENTT_CONSTEVAL auto index_sequence_for(Ret (*)(Args...)) { diff --git a/src/entt/stl/utility.hpp b/src/entt/stl/utility.hpp index f2265c09d..2a0960609 100644 --- a/src/entt/stl/utility.hpp +++ b/src/entt/stl/utility.hpp @@ -6,6 +6,7 @@ /*! @cond ENTT_INTERNAL */ namespace entt::stl { +using std::declval; using std::exchange; } // namespace entt::stl