7#include "Arp/Base/Core/Detail/DelegateFunctorBase.hxx" 
    9namespace Arp::Base::Core
 
   14template <
typename T> 
class ConstMethodFunctor;
 
   17template<
class C, 
class R, 
class ...A>
 
   18class ConstMethodFunctor<R(C::*)(A...)const> : 
public DelegateFunctorBase<ConstMethodFunctor<R(C::*)(A...)const>>
 
   21    using MethodPtr = R(C::*)(A...)
const;
 
   24    ConstMethodFunctor(
const C* pObject, R(C::*pMethod)(A...)const)
 
   30    ConstMethodFunctor(
const C& 
object, R(C::*pMethod)(A...)const)
 
   37    template<
class ...Args>
 
   38    static R Invoke(IDelegateFunctor* pFunctor, Args... args)
 
   40        auto* pThis = 
dynamic_cast<ConstMethodFunctor*
>(pFunctor);
 
   41        return std::invoke(pThis->pMethod, pThis->pObject, args...);
 
   45    bool EqualsTo(
const ConstMethodFunctor& other)
override 
   47        return this->pObject == other.pObject && this->pMethod == other.pMethod;