1 #ifndef CASM_type_traits
2 #define CASM_type_traits
9 template <
typename... Ts>
15 template <
typename... Ts>
23 template <
typename ClassType,
typename ReturnType,
typename... Args>
25 enum { arity =
sizeof...(Args) };
29 template <std::
size_t i>
31 typedef typename std::tuple_element<i, std::tuple<Args...>>
::type type;
49 typename std::decay<typename function_traits<F>::result_type>::type;
Non-std smart pointer classes and functions.
typename std::decay< typename function_traits< F >::template arg< 1 >::type >::type second_argument_type
typename make_void< Ts... >::type void_t
Alias for void, to help SFINAE work.
typename std::decay< typename function_traits< F >::template arg< 0 >::type >::type first_argument_type
typename std::decay< typename function_traits< F >::result_type >::type return_type
std::tuple_element< i, std::tuple< Args... > >::type type
Deduces return type and argument types for non-generic labmdas and functors.
Alias for void, to help SFINAE work.