Note that "FunctionTraits" is also significantly smaller than the Boost version ("boost::callable_traits"), which consists of a bloated (excessive) number of files and roughly twice the amount of code at this writing (largely due to a needlessly complex design, no disrespect intended). "...
structFunctionTraits<T,typenameboost::enable_if<boost::function_types::is_callable_builtin<T>>::type> { enum{isFunction=true}; typedeftypenameboost::function_types::result_type<T>::typeReturnType; }; /** * Specialization for functors (classes exporting a result_type type) ...
return tagValue; } template <typename T> struct FunctionTraits { template <size_t i> using arg = std::tuple_element_t<i, boost::callable_traits::args_t<T>>; }; constexpr size_t numArgsFromTag(int tag) { size_t ret = 0;0...