41template <
typename Return_type,
typename... Args>
57 using ptr_t = Return_type (*)(
const context_t &, Args...);
88 template <
typename Callable>
90 : m_context{.obj_ptr = (void *)callable},
91 m_call_with_context([](const context_t &t, Args... args) {
92 return (
static_cast<Callable *
>(t.obj_ptr)->operator())(
93 std::forward<Args>(args)...);
102 : m_context{.fn_ptr = fn_ptr},
103 m_call_with_context([](const context_t &t, Args... args) {
104 return (
reinterpret_cast<Return_type (*)(Args...)
>(t.fn_ptr))(
105 std::forward<Args>(args)...);
109 return m_call_with_context(m_context, std::forward<Args>(args)...);
Function_reference(Callable *callable)
Creates a reference to the callable->operator().
Definition: ut0function_reference.h:89
context_t m_context
A crucial context for making a call to the referenced function.
Definition: ut0function_reference.h:63
Return_type(*)(const context_t &, Args...) ptr_t
Definition: ut0function_reference.h:57
ptr_t m_call_with_context
How to call the referenced function given the m_context.
Definition: ut0function_reference.h:76
Return_type(*)(Args...) rawfn_ptr_t
Definition: ut0function_reference.h:96
Return_type(Args...) signature_t
Definition: ut0function_reference.h:56
Function_reference(rawfn_ptr_t fn_ptr)
Creates a reference to a free function fn_ptr.
Definition: ut0function_reference.h:101
Return_type operator()(Args... args) const
Definition: ut0function_reference.h:108
Definition: ut0function_reference.h:29
This file contains a set of libraries providing overloads for regular dynamic allocation routines whi...
Definition: aligned_alloc.h:48
void * obj_ptr
Definition: ut0function_reference.h:54