struct Person { bool IsFemale() const; bool IsFemaleNonConst(); };
template <typename Ret, typename Class, typename... Args> struct class_function_traits{};
template <typename Ret, typename Class, typename... Args> struct class_function_traits<Ret(Class::*)(Args...)> { using return_type = Ret; using class_type = Class; using args_type = std::tuple<Args...>; }
template <typename Class, typename T> struct class_variable_traits{};
template <typename Class, typename T> struct class_variable_traits<T Class::*> { using class_type = Class; using variable_type = T; };
|