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>>