Browse Source

meta: avoid tricks and whatnot with meta_arg_node

Michele Caini 3 years ago
parent
commit
eedecc07fd
1 changed files with 7 additions and 3 deletions
  1. 7 3
      src/entt/meta/node.hpp

+ 7 - 3
src/entt/meta/node.hpp

@@ -137,9 +137,13 @@ template<typename Type>
 meta_type_node resolve() noexcept;
 meta_type_node resolve() noexcept;
 
 
 template<typename... Args>
 template<typename... Args>
-[[nodiscard]] meta_type_node meta_arg_node(type_list<Args...>, const std::size_t index) noexcept {
-    meta_type_node args[sizeof...(Args) + 1u]{{}, internal::resolve<std::remove_cv_t<std::remove_reference_t<Args>>>()...};
-    return args[index + 1u];
+[[nodiscard]] meta_type_node meta_arg_node(type_list<Args...>, [[maybe_unused]] const std::size_t index) noexcept {
+    if constexpr(sizeof...(Args) == 0u) {
+        return {};
+    } else {
+        const meta_type_node args[sizeof...(Args)]{internal::resolve<std::remove_cv_t<std::remove_reference_t<Args>>>()...};
+        return args[index];
+    }
 }
 }
 
 
 template<typename Type>
 template<typename Type>