6 template <
typename... Args>
9 template <
typename R,
typename C>
10 constexpr auto operator()(R (C::*ptr)(Args...))
const noexcept ->
decltype(ptr)
13 template <
typename R,
typename C>
14 static constexpr auto of(R (C::*ptr)(Args...))
noexcept ->
decltype(ptr)
18 template <
typename... Args>
21 template <
typename R,
typename C>
22 constexpr auto operator()(R (C::*ptr)(Args...)
const)
const noexcept ->
decltype(ptr)
25 template <
typename R,
typename C>
26 static constexpr auto of(R (C::*ptr)(Args...)
const)
noexcept ->
decltype(ptr)
30 template <
typename... Args>
39 constexpr auto operator()(R (*ptr)(Args...))
const noexcept ->
decltype(ptr)
43 static constexpr auto of(R (*ptr)(Args...))
noexcept ->
decltype(ptr)
46 template <
typename R,
typename C,
typename... Args>
49 constexpr auto operator()(R (C::*ptr)(Args...))
const noexcept ->
decltype(ptr)
52 static constexpr auto of(R (C::*ptr)(Args...))
noexcept ->
decltype(ptr)
56 template <
typename R,
typename C,
typename... Args>
59 constexpr auto operator()(R (C::*ptr)(Args...)
const)
const noexcept ->
decltype(ptr)
62 static constexpr auto of(R (C::*ptr)(Args...)
const)
noexcept ->
decltype(ptr)
66 template <
typename R,
typename C,
typename... Args>
74 constexpr auto operator()(R (*ptr)(Args...))
const noexcept ->
decltype(ptr)
77 static constexpr auto of(R (*ptr)(Args...))
noexcept ->
decltype(ptr)
83 template <
typename... Args>
constexpr __attribute__((__unused__))
detail::overload_r_c<Args...> overload_r_c = {};
84 template <
typename... Args>
constexpr __attribute__((__unused__)) detail::overload<Args...> overload = {};
85 template <
typename... Args>
constexpr __attribute__((__unused__)) detail::const_overload<Args...> const_overload = {};
86 template <
typename... Args>
constexpr __attribute__((__unused__)) detail::non_const_overload<Args...> non_const_overload = {};