29template <
typename Ret,
typename... Args>
64 template <
typename T,
typename Method>
74 template <
typename T,
typename Method>
87 template <
typename Callable,
typename = std::enable_if_t<!std::is_same_v<std::decay_t<Callable>, DtDelegate>>>
138 template <typename... CallArgs, typename = std::enable_if_t<!std::is_void_v<Ret>>>
139 Ret operator()(CallArgs&&... args) const;
148 template <typename... CallArgs, typename = std::enable_if_t<std::is_void_v<Ret>>, typename =
void>
149 void operator()(CallArgs&&... args) const;
156 explicit operator
bool() const noexcept;
168 std::
size_t hash() const noexcept;
211 template <typename Method>
221 template <typename PtrType>
222 static std::
size_t hashPtr(PtrType ptr) noexcept;
232 template <typename Callable>
233 static std::
size_t hashLambda(const Callable& callable) noexcept;
306#include "vreUtil/delegate.inl"
std::size_t hash() const noexcept
DtDelegate(T *object, Method method)
Constructor binding a class member function.
DelegateType myType
Definition delegate.h:264
DtDelegate & operator=(DtDelegate &&other) noexcept
Move assignment operator.
std::size_t myStaticFuncHash
Definition delegate.h:276
std::size_t myLambdaHash
Definition delegate.h:288
void resetHash() const noexcept
~DtDelegate()=default
Destructor.
DelegateType getType() const noexcept
DtDelegate()=default
Default constructor - creates an empty delegate.
DtDelegate(const DtDelegate &other)
Copy constructor.
DtDelegate(Callable &&callable)
Constructor for any callable (lambda, functor, etc.)
static std::size_t hashMethodPtr(const Method &method) noexcept
DtDelegate(const T *object, Method method)
Constructor binding a const class member function.
DtDelegate(DtDelegate &&other) noexcept
Move constructor.
void computeHash() noexcept
std::size_t myHash
Definition delegate.h:294
bool myHashComputed
Definition delegate.h:300
void reset() noexcept
Reset the delegate to an empty state.
std::function< void(Args...)> myFunction
Definition delegate.h:259
static std::size_t hashLambda(const Callable &callable) noexcept
std::size_t myObjectHash
Definition delegate.h:270
static std::size_t hashPtr(PtrType ptr) noexcept
DelegateType
Enumeration of delegate types.
Definition delegate.h:37
@ Lambda
Lambda, functor, or other callable object.
Definition delegate.h:41
@ Static
Static or global function.
Definition delegate.h:39
@ Member
Member function bound to an object.
Definition delegate.h:40
@ Empty
Empty delegate with no bound callable.
Definition delegate.h:38
DtDelegate(Ret(*func)(Args...))
Constructor binding a static or global function.
DtDelegate & operator=(const DtDelegate &other)
Copy assignment operator.
std::size_t myMethodHash
Definition delegate.h:282
Include export definitions for this library.
Definition glsVreMessageUtil.h:49