Procházet zdrojové kódy

meta: turned an useless function into a constexpr value

Michele Caini před 4 roky
rodič
revize
fc6bda5cd8
2 změnil soubory, kde provedl 9 přidání a 11 odebrání
  1. 7 9
      src/entt/meta/container.hpp
  2. 2 2
      src/entt/meta/meta.hpp

+ 7 - 9
src/entt/meta/container.hpp

@@ -125,9 +125,7 @@ struct basic_meta_associative_container_traits {
     using iterator = meta_associative_container::iterator;
     using size_type = std::size_t;
 
-    [[nodiscard]] static constexpr bool key_only() ENTT_NOEXCEPT {
-        return is_key_only_meta_associative_container<Type>::value;
-    }
+    static constexpr auto key_only = is_key_only_meta_associative_container<Type>::value;
 
     [[nodiscard]] static size_type size(const any &container) ENTT_NOEXCEPT {
         return any_cast<const Type &>(container).size();
@@ -144,18 +142,18 @@ struct basic_meta_associative_container_traits {
 
     [[nodiscard]] static iterator begin(any &container) {
         if(auto * const cont = any_cast<Type>(&container); cont) {
-            return iterator{std::integral_constant<bool, key_only()>{}, cont->begin()};
+            return iterator{std::integral_constant<bool, key_only>{}, cont->begin()};
         }
 
-        return iterator{std::integral_constant<bool, key_only()>{}, std::begin(any_cast<const Type &>(container))};
+        return iterator{std::integral_constant<bool, key_only>{}, std::begin(any_cast<const Type &>(container))};
     }
 
     [[nodiscard]] static iterator end(any &container) {
         if(auto * const cont = any_cast<Type>(&container); cont) {
-            return iterator{std::integral_constant<bool, key_only()>{}, cont->end()};
+            return iterator{std::integral_constant<bool, key_only>{}, cont->end()};
         }
 
-        return iterator{std::integral_constant<bool, key_only()>{}, std::end(any_cast<const Type &>(container))};
+        return iterator{std::integral_constant<bool, key_only>{}, std::end(any_cast<const Type &>(container))};
     }
 
     [[nodiscard]] static bool insert(any &container, meta_any &key, [[maybe_unused]] meta_any &value) {
@@ -183,10 +181,10 @@ struct basic_meta_associative_container_traits {
     [[nodiscard]] static iterator find(any &container, meta_any &key) {
         if(key.allow_cast<const typename Type::key_type &>()) {
             if(auto * const cont = any_cast<Type>(&container); cont) {
-                return iterator{std::integral_constant<bool, key_only()>{}, cont->find(key.cast<const typename Type::key_type &>())};
+                return iterator{std::integral_constant<bool, key_only>{}, cont->find(key.cast<const typename Type::key_type &>())};
             }
 
-            return iterator{std::integral_constant<bool, key_only()>{}, any_cast<const Type &>(container).find(key.cast<const typename Type::key_type &>())};
+            return iterator{std::integral_constant<bool, key_only>{}, any_cast<const Type &>(container).find(key.cast<const typename Type::key_type &>())};
         }
 
         return {};

+ 2 - 2
src/entt/meta/meta.hpp

@@ -104,7 +104,7 @@ public:
      */
     template<typename Type>
     meta_associative_container(std::in_place_type_t<Type>, any instance) ENTT_NOEXCEPT
-        : key_only_container{meta_associative_container_traits<Type>::key_only()},
+        : key_only_container{meta_associative_container_traits<Type>::key_only},
           key_type_node{internal::meta_node<std::remove_const_t<std::remove_reference_t<typename Type::key_type>>>::resolve()},
           mapped_type_node{nullptr},
           value_type_node{internal::meta_node<std::remove_const_t<std::remove_reference_t<typename Type::value_type>>>::resolve()},
@@ -117,7 +117,7 @@ public:
           find_fn{&meta_associative_container_traits<Type>::find},
           storage{std::move(instance)}
     {
-        if constexpr(!meta_associative_container_traits<Type>::key_only()) {
+        if constexpr(!meta_associative_container_traits<Type>::key_only) {
             mapped_type_node = internal::meta_node<std::remove_const_t<std::remove_reference_t<typename Type::mapped_type>>>::resolve();
         }
     }