Преглед изворни кода

meta: get rid of reserve_aware_container

skypjack пре 1 недеља
родитељ
комит
e14033b215
1 измењених фајлова са 3 додато и 12 уклоњено
  1. 3 12
      src/entt/meta/container.hpp

+ 3 - 12
src/entt/meta/container.hpp

@@ -4,6 +4,7 @@
 #define ENTT_META_CONTAINER_HPP
 
 #include <array>
+#include <concepts>
 #include <cstddef>
 #include <deque>
 #include <iterator>
@@ -48,16 +49,6 @@ struct key_only_associative_container<Type>: std::false_type {};
 template<typename Type>
 inline constexpr bool key_only_associative_container_v = key_only_associative_container<Type>::value;
 
-template<typename>
-struct reserve_aware_container: std::false_type {};
-
-template<typename Type>
-requires requires(Type cont) { cont.reserve(0u); }
-struct reserve_aware_container<Type>: std::true_type {};
-
-template<typename Type>
-inline constexpr bool reserve_aware_container_v = reserve_aware_container<Type>::value;
-
 } // namespace internal
 /*! @endcond */
 
@@ -105,7 +96,7 @@ struct basic_meta_sequence_container_traits {
      * @return True in case of success, false otherwise.
      */
     [[nodiscard]] static bool reserve([[maybe_unused]] void *container, [[maybe_unused]] const size_type sz) {
-        if constexpr(internal::reserve_aware_container_v<Type>) {
+        if constexpr(requires(Type elem) { { elem.reserve(sz) }; }) {
             static_cast<Type *>(container)->reserve(sz);
             return true;
         } else {
@@ -223,7 +214,7 @@ struct basic_meta_associative_container_traits {
      * @return True in case of success, false otherwise.
      */
     [[nodiscard]] static bool reserve([[maybe_unused]] void *container, [[maybe_unused]] const size_type sz) {
-        if constexpr(internal::reserve_aware_container_v<Type>) {
+        if constexpr(requires(Type elem) { { elem.reserve(sz) }; }) {
             static_cast<Type *>(container)->reserve(sz);
             return true;
         } else {