7#include "Arp/Base/Core/Detail/DelegateFunctorBase.hxx"
8namespace Arp::Base::Core
13template <
typename T>
class StaticFunctor;
16template<
class R,
class ...A>
17class StaticFunctor<R(A...)> :
public DelegateFunctorBase<StaticFunctor<R(A...)>>
20 using FunctionPtr = R(*)(A...);
23 StaticFunctor(R(*pFunction)(A...))
24 : pFunction(pFunction)
29 template<
class ...Args>
30 static R Invoke(IDelegateFunctor* pFunctor, Args... args)
32 auto* pThis =
dynamic_cast<StaticFunctor*
>(pFunctor);
33 return std::invoke(pThis->pFunction, args...);
37 bool EqualsTo(
const StaticFunctor& other)
override
39 return this->pFunction == other.pFunction;
43 FunctionPtr pFunction;