File templates.h#

template<typename ClassType, typename ReturnType, typename ...Args>
struct function_traits<ReturnType (ClassType::*)(Args...)> : public sym::function_traits<ReturnType(Args...)>#
template<typename ClassType, typename ReturnType, typename ...Args>
struct function_traits<ReturnType (ClassType::*)(Args...) const> : public sym::function_traits<ReturnType(Args...)>#
namespace sym

Typedefs

template<typename T>
using remove_cvref_t = typename remove_cvref<T>::type#
template<typename T>
struct function_traits#

Subclassed by sym::function_traits< const T >, sym::function_traits< T & >, sym::function_traits< T && >, sym::function_traits< T * >, sym::function_traits< volatile T >

template<typename T>
struct function_traits<const T> : public sym::function_traits<T>#
template<typename ReturnType, typename ...Args>
struct function_traits<ReturnType(Args...)>#

Subclassed by sym::function_traits< ReturnType(ClassType::*)(Args…) const >, sym::function_traits< ReturnType(ClassType::*)(Args…)>

Public Types

using return_type = ReturnType#
using base_return_type = typename std::decay_t<return_type>#

Public Static Attributes

static constexpr std::size_t num_arguments = sizeof...(Args)#
template<std::size_t N>
struct arg#

Public Types

using type = typename std::tuple_element<N, std::tuple<Args...>>::type#
using base_type = typename std::decay_t<type>#
template<typename ClassType, typename ReturnType, typename... Args> *)(Args...) const > : public sym::function_traits< ReturnType(Args...)>
template<typename ClassType, typename ReturnType, typename... Args> *)(Args...)> : public sym::function_traits< ReturnType(Args...)>
template<typename ReturnTypeT, typename ...Args, typename ...FArgs>
struct function_traits<SYM_BIND_TYPE>#

Public Types

using return_type = ReturnTypeT#
using base_return_type = typename std::decay_t<return_type>#

Public Static Attributes

static constexpr std::size_t num_arguments = signature::N#

Private Types

using bind_type = SYM_BIND_TYPE#
using signature = typename internal::bind_signature<bind_type>#
template<std::size_t N>
struct arg#

Public Types

using type = typename std::tuple_element<N, typename signature::type>::type#
using base_type = typename std::decay_t<type>#
template<typename T>
struct function_traits<T&> : public sym::function_traits<T>#
template<typename T>
struct function_traits<T&&> : public sym::function_traits<T>#
template<typename T>
struct function_traits<T*> : public sym::function_traits<T>#
template<typename T>
struct function_traits<volatile T> : public sym::function_traits<T>#
template<class T>
struct remove_cvref#

Public Types

using type = std::remove_cv_t<std::remove_reference_t<T>>#