diff --git a/src/entt/meta/factory.hpp b/src/entt/meta/factory.hpp index 1f23baf6a..631185601 100644 --- a/src/entt/meta/factory.hpp +++ b/src/entt/meta/factory.hpp @@ -325,11 +325,13 @@ public: auto * const type = internal::meta_info::resolve(); if constexpr(std::is_same_v) { + using owner_type = std::integral_constant; + static internal::meta_data_node node{ hashed_string{str}, type->data, type, - properties>(std::forward(property)...), + properties(std::forward(property)...), true, true, &internal::meta_info::resolve, @@ -345,11 +347,13 @@ public: internal::meta_info::template data = &node; type->data = &node; } else { + using owner_type = std::integral_constant; + static internal::meta_data_node node{ hashed_string{str}, type->data, type, - properties>(std::forward(property)...), + properties(std::forward(property)...), std::is_const_v>, !std::is_member_object_pointer_v, &internal::meta_info>::resolve, @@ -391,6 +395,7 @@ public: */ template meta_factory data(const char *str, Property &&... property) ENTT_NOEXCEPT { + using owner_type = std::tuple, std::integral_constant>; using data_type = std::invoke_result_t; static_assert(std::is_invocable_v); auto * const type = internal::meta_info::resolve(); @@ -399,7 +404,7 @@ public: hashed_string{str}, type->data, type, - properties>(std::forward(property)...), + properties(std::forward(property)...), false, false, &internal::meta_info::resolve, @@ -434,13 +439,14 @@ public: */ template meta_factory func(const char *str, Property &&... property) ENTT_NOEXCEPT { + using owner_type = std::integral_constant; auto * const type = internal::meta_info::resolve(); static internal::meta_func_node node{ hashed_string{str}, type->func, type, - properties>(std::forward(property)...), + properties(std::forward(property)...), func_type::size, func_type::is_const, func_type::is_static,