From 699fb73726b6c370e3931fe57646bcccda3ceaa0 Mon Sep 17 00:00:00 2001 From: Michele Caini Date: Sat, 1 Jun 2019 15:18:58 +0200 Subject: [PATCH] bug fixing --- src/entt/meta/meta.hpp | 7 +++++-- test/entt/meta/meta.cpp | 6 ++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/entt/meta/meta.hpp b/src/entt/meta/meta.hpp index f36dc0bc3..89bf04c1b 100644 --- a/src/entt/meta/meta.hpp +++ b/src/entt/meta/meta.hpp @@ -1848,8 +1848,11 @@ public: std::array arguments{{std::forward(args)...}}; meta_any any{}; - internal::iterate<&internal::meta_type_node::ctor>([data = arguments.data(), &any](auto *curr) -> bool { - any = curr->invoke(data); + internal::find_if<&internal::meta_type_node::ctor>([data = arguments.data(), &any](auto *curr) -> bool { + if(curr->size == sizeof...(args)) { + any = curr->invoke(data); + } + return static_cast(any); }, node); diff --git a/test/entt/meta/meta.cpp b/test/entt/meta/meta.cpp index 65a6f1a6b..ae9f79bce 100644 --- a/test/entt/meta/meta.cpp +++ b/test/entt/meta/meta.cpp @@ -1420,6 +1420,12 @@ TEST_F(Meta, MetaTypeConstructInvalidArgs) { ASSERT_FALSE(any); } +TEST_F(Meta, MetaTypeLessArgs) { + auto type = entt::resolve(); + auto any = type.construct(base_type{}); + ASSERT_FALSE(any); +} + TEST_F(Meta, MetaTypeConstructCastAndConvert) { auto type = entt::resolve(); auto any = type.construct(entt::meta_any{derived_type{}}, entt::meta_any{42.}, entt::meta_any{'c'});