14#ifndef WPIUTIL_WPI_FUNCTION_REF_H_ 
   15#define WPIUTIL_WPI_FUNCTION_REF_H_ 
   33template <
typename Ret, 
typename... Params>
 
   35  Ret (*callback)(intptr_t callable, Params... params) = 
nullptr;
 
   38  template <
typename Callable>
 
   39  static Ret callback_fn(intptr_t callable, Params... params) {
 
   40    return (*
reinterpret_cast<Callable*
>(callable))(std::forward<Params>(
 
   48  template <
typename Callable>
 
   51      typename std::enable_if<
 
   52          !std::is_same<
typename std::remove_reference<Callable>::type,
 
   54      : callback(callback_fn<typename 
std::remove_reference<Callable>::type>),
 
   55        callable(reinterpret_cast<intptr_t>(&callable)) {}
 
 
   58    return callback(callable, std::forward<Params>(params)...);
 
 
   61  explicit operator bool()
 const { 
return callback; }
 
 
Ret operator()(Params... params) const
Definition function_ref.h:57
function_ref(std::nullptr_t)
Definition function_ref.h:46
function_ref(Callable &&callable, typename std::enable_if< !std::is_same< typename std::remove_reference< Callable >::type, function_ref >::value >::type *=nullptr)
Definition function_ref.h:49
An efficient, type-erasing, non-owning reference to a callable.
Definition function_ref.h:31
Implement std::hash so that hash_code can be used in STL containers.
Definition PointerIntPair.h:280
Foonathan namespace.
Definition ntcore_cpp.h:26