diff --git a/src/entt/meta/node.hpp b/src/entt/meta/node.hpp index 3b421c4b4..3fd97bc5f 100644 --- a/src/entt/meta/node.hpp +++ b/src/entt/meta/node.hpp @@ -138,12 +138,14 @@ meta_type_node resolve() noexcept; template [[nodiscard]] meta_type_node meta_arg_node(type_list, [[maybe_unused]] const std::size_t index) noexcept { - if constexpr(sizeof...(Args) == 0u) { - return {}; - } else { - const meta_type_node args[sizeof...(Args)]{internal::resolve>>()...}; - return args[index]; + if constexpr(sizeof...(Args) != 0u) { + if(index < sizeof...(Args)) { + const meta_type_node args[sizeof...(Args)]{internal::resolve>>()...}; + return args[index]; + } } + + return {}; } template diff --git a/test/entt/meta/meta_utility.cpp b/test/entt/meta/meta_utility.cpp index 2ae71dec0..1bf69dfa8 100644 --- a/test/entt/meta/meta_utility.cpp +++ b/test/entt/meta/meta_utility.cpp @@ -73,8 +73,10 @@ TEST_F(MetaUtility, MetaDispatch) { } TEST_F(MetaUtility, MetaArg) { + ASSERT_EQ((entt::meta_arg>(3u)), entt::meta_type{}); ASSERT_EQ((entt::meta_arg>(0u)), entt::resolve()); ASSERT_EQ((entt::meta_arg>(1u)), entt::resolve()); + ASSERT_EQ((entt::meta_arg>(2u)), entt::meta_type{}); } TEST_F(MetaUtility, MetaSetter) {