diff --git a/src/entt/meta/meta.hpp b/src/entt/meta/meta.hpp index 1185dd4f1..b939c1ba7 100644 --- a/src/entt/meta/meta.hpp +++ b/src/entt/meta/meta.hpp @@ -2269,6 +2269,7 @@ invoke(const meta_handle &, meta_any *args, std::index_sequence) { { if constexpr(std::is_void_v) { std::invoke(Func, (args+Indexes)->cast>()...); + any.emplace(); } else { any = meta_any{std::invoke(Func, (args+Indexes)->cast>()...)}; } @@ -2291,6 +2292,7 @@ invoke(meta_handle &handle, meta_any *args, std::index_sequence) { { if constexpr(std::is_void_v) { std::invoke(Member, clazz, (args+Indexes)->cast>()...); + any.emplace(); } else { any = meta_any{std::invoke(Member, clazz, (args+Indexes)->cast>()...)}; } diff --git a/test/entt/meta/meta.cpp b/test/entt/meta/meta.cpp index 7f21a5459..bf43d120d 100644 --- a/test/entt/meta/meta.cpp +++ b/test/entt/meta/meta.cpp @@ -1373,7 +1373,8 @@ TEST_F(Meta, MetaFuncRetVoid) { auto any = func.invoke(instance, 5); - ASSERT_FALSE(any); + ASSERT_TRUE(any); + ASSERT_TRUE(any.can_cast()); ASSERT_EQ(func_type::value, 25); func.prop([](auto prop) { @@ -1442,7 +1443,8 @@ TEST_F(Meta, MetaFuncStaticRetVoid) { auto any = func.invoke({}, 42); - ASSERT_FALSE(any); + ASSERT_TRUE(any); + ASSERT_TRUE(any.can_cast()); ASSERT_EQ(func_type::value, 42); func.prop([](auto *prop) {