Browse Source

minor changes

Michele Caini 6 years ago
parent
commit
a179ec485b
1 changed files with 2 additions and 2 deletions
  1. 2 2
      src/entt/signal/delegate.hpp

+ 2 - 2
src/entt/signal/delegate.hpp

@@ -105,17 +105,18 @@ class delegate<Ret(Args...)> {
 
 
     template<auto Function, std::size_t... Index>
     template<auto Function, std::size_t... Index>
     void connect(std::index_sequence<Index...>) ENTT_NOEXCEPT {
     void connect(std::index_sequence<Index...>) ENTT_NOEXCEPT {
+        static_assert(std::is_invocable_r_v<Ret, decltype(Function), std::tuple_element_t<Index, std::tuple<Args...>>...>);
         data = nullptr;
         data = nullptr;
 
 
         fn = [](const void *, std::tuple<Args &&...> args) -> Ret {
         fn = [](const void *, std::tuple<Args &&...> args) -> Ret {
             // Ret(...) makes void(...) eat the return values to avoid errors
             // Ret(...) makes void(...) eat the return values to avoid errors
-            static_assert(std::is_invocable_r_v<Ret, decltype(Function), std::tuple_element_t<Index, std::tuple<Args...>>...>);
             return Ret(std::invoke(Function, std::forward<std::tuple_element_t<Index, std::tuple<Args...>>>(std::get<Index>(args))...));
             return Ret(std::invoke(Function, std::forward<std::tuple_element_t<Index, std::tuple<Args...>>>(std::get<Index>(args))...));
         };
         };
     }
     }
 
 
     template<auto Candidate, typename Type, std::size_t... Index>
     template<auto Candidate, typename Type, std::size_t... Index>
     void connect(Type *value_or_instance, std::index_sequence<Index...>) ENTT_NOEXCEPT {
     void connect(Type *value_or_instance, std::index_sequence<Index...>) ENTT_NOEXCEPT {
+        static_assert(std::is_invocable_r_v<Ret, decltype(Candidate), Type *, std::tuple_element_t<Index, std::tuple<Args...>>...>);
         data = value_or_instance;
         data = value_or_instance;
 
 
         fn = [](const void *payload, std::tuple<Args &&...> args) -> Ret {
         fn = [](const void *payload, std::tuple<Args &&...> args) -> Ret {
@@ -128,7 +129,6 @@ class delegate<Ret(Args...)> {
             }
             }
 
 
             // Ret(...) makes void(...) eat the return values to avoid errors
             // Ret(...) makes void(...) eat the return values to avoid errors
-            static_assert(std::is_invocable_r_v<Ret, decltype(Candidate), Type *, std::tuple_element_t<Index, std::tuple<Args...>>...>);
             return Ret(std::invoke(Candidate, curr, std::forward<std::tuple_element_t<Index, std::tuple<Args...>>>(std::get<Index>(args))...));
             return Ret(std::invoke(Candidate, curr, std::forward<std::tuple_element_t<Index, std::tuple<Args...>>>(std::get<Index>(args))...));
         };
         };
     }
     }