Explorar o código

stl: std::invoke_result_t

skypjack hai 1 día
pai
achega
1763f8b192
Modificáronse 3 ficheiros con 4 adicións e 3 borrados
  1. 2 2
      src/entt/meta/factory.hpp
  2. 1 1
      src/entt/meta/utility.hpp
  3. 1 0
      src/entt/stl/type_traits.hpp

+ 2 - 2
src/entt/meta/factory.hpp

@@ -237,7 +237,7 @@ public:
      */
      */
     template<auto Candidate>
     template<auto Candidate>
     auto conv() noexcept {
     auto conv() noexcept {
-        using conv_type = stl::remove_cvref_t<std::invoke_result_t<decltype(Candidate), Type &>>;
+        using conv_type = stl::remove_cvref_t<stl::invoke_result_t<decltype(Candidate), Type &>>;
         auto *const op = +[](const meta_ctx &area, const void *instance) { return forward_as_meta(area, std::invoke(Candidate, *static_cast<const Type *>(instance))); };
         auto *const op = +[](const meta_ctx &area, const void *instance) { return forward_as_meta(area, std::invoke(Candidate, *static_cast<const Type *>(instance))); };
 
 
         base_type::insert_or_assign(
         base_type::insert_or_assign(
@@ -355,7 +355,7 @@ public:
     template<auto Data, typename Policy = as_value_t>
     template<auto Data, typename Policy = as_value_t>
     meta_factory data(const id_type id, const char *name = nullptr) noexcept {
     meta_factory data(const id_type id, const char *name = nullptr) noexcept {
         if constexpr(stl::is_member_object_pointer_v<decltype(Data)>) {
         if constexpr(stl::is_member_object_pointer_v<decltype(Data)>) {
-            using data_type = std::invoke_result_t<decltype(Data), Type &>;
+            using data_type = stl::invoke_result_t<decltype(Data), Type &>;
             static_assert(Policy::template value<data_type>, "Invalid return type for the given policy");
             static_assert(Policy::template value<data_type>, "Invalid return type for the given policy");
 
 
             base_type::data(
             base_type::data(

+ 1 - 1
src/entt/meta/utility.hpp

@@ -317,7 +317,7 @@ template<typename Type, auto Data>
 template<typename Type, auto Data, meta_policy Policy = as_value_t>
 template<typename Type, auto Data, meta_policy Policy = as_value_t>
 [[nodiscard]] meta_any meta_getter(meta_handle instance) {
 [[nodiscard]] meta_any meta_getter(meta_handle instance) {
     if constexpr(std::is_member_pointer_v<decltype(Data)> || std::is_function_v<std::remove_reference_t<stl::remove_pointer_t<decltype(Data)>>>) {
     if constexpr(std::is_member_pointer_v<decltype(Data)> || std::is_function_v<std::remove_reference_t<stl::remove_pointer_t<decltype(Data)>>>) {
-        if constexpr(!std::is_array_v<stl::remove_cvref_t<std::invoke_result_t<decltype(Data), Type &>>>) {
+        if constexpr(!std::is_array_v<stl::remove_cvref_t<stl::invoke_result_t<decltype(Data), Type &>>>) {
             if constexpr(std::is_invocable_v<decltype(Data), Type &>) {
             if constexpr(std::is_invocable_v<decltype(Data), Type &>) {
                 if(auto *clazz = instance->try_cast<Type>(); clazz) {
                 if(auto *clazz = instance->try_cast<Type>(); clazz) {
                     return meta_dispatch<Policy>(instance->context(), std::invoke(Data, *clazz));
                     return meta_dispatch<Policy>(instance->context(), std::invoke(Data, *clazz));

+ 1 - 0
src/entt/stl/type_traits.hpp

@@ -6,6 +6,7 @@
 /*! @cond ENTT_INTERNAL */
 /*! @cond ENTT_INTERNAL */
 namespace entt::stl {
 namespace entt::stl {
 
 
+using std::invoke_result_t;
 using std::is_invocable_r_v;
 using std::is_invocable_r_v;
 using std::is_member_object_pointer_v;
 using std::is_member_object_pointer_v;
 using std::is_same_v;
 using std::is_same_v;