diff --git a/source/mijin/util/traits.hpp b/source/mijin/util/traits.hpp index bddd0c0..4991efe 100644 --- a/source/mijin/util/traits.hpp +++ b/source/mijin/util/traits.hpp @@ -253,6 +253,42 @@ struct optional_base template using optional_base_t = optional_base::type; +namespace impl +{ +template +struct function_traits_base {}; + +template +struct function_traits_base +{ + using result_t = TResult; + using params_t = std::tuple; +}; + +template +struct function_traits_base +{ + using result_t = TResult; + using params_t = std::tuple; +}; + +template +struct function_traits_base +{ + using result_t = TResult; + using params_t = std::tuple; +}; +} + +template +struct function_traits : impl::function_traits_base +{ + static constexpr std::size_t NUM_PARAMS = std::tuple_size_v::params_t>; + + template + using param_t = std::tuple_element_t::params_t>; +}; + // // public functions //