Răsfoiți Sursa

added compile-time checks

Michele Caini 7 ani în urmă
părinte
comite
1ae436cb08
1 a modificat fișierele cu 3 adăugiri și 0 ștergeri
  1. 3 0
      src/entt/meta/meta.hpp

+ 3 - 0
src/entt/meta/meta.hpp

@@ -9,6 +9,7 @@
 #include <cassert>
 #include <cstddef>
 #include <utility>
+#include <functional>
 #include <type_traits>
 #include "../config/config.h"
 #include "../core/hashed_string.hpp"
@@ -2046,8 +2047,10 @@ bool setter([[maybe_unused]] meta_handle handle, [[maybe_unused]] meta_any &any)
 
         if(accepted && clazz) {
             if constexpr(std::is_function_v<std::remove_pointer_t<decltype(Data)>>) {
+                static_assert(std::is_invocable_v<decltype(Data), Type &, data_type>);
                 Data(*clazz, any.cast<data_type>());
             } else if constexpr(std::is_member_function_pointer_v<decltype(Data)>) {
+                static_assert(std::is_invocable_v<decltype(Data), Type *, data_type>);
                 (clazz->*Data)(any.cast<data_type>());
             }
         }