Nisam stigao ranije da pogledam tvoj kod (implementacija bazirana na kodu Sergey Ryazanov-a ?).
Ovo mi nije jasno sta si radio?
Citat:
Kod:
template<typename R, typename... Args>
class Delegate<R(Args...)>
...
|
Iskasapio sam malo ovu Delegate klasu, gde drzim direktno pokazivac na metodu umesto fukcije, a i ne vidim zasto bi koristio void* ako imam tip objekta.
Kod:
template<typename T, typename R, typename... Args>
class Delegate
{
private:
typedef T* t_pointer;
typedef R(T::*t_method)(Args...);
t_pointer m_object;
t_method m_pmethod;
public:
Delegate(t_pointer obj, t_method m)
: m_object(obj), m_pmethod(m)
{}
Delegate(const Delegate& Other) = default; // delete
Delegate& operator=(const Delegate& Other) = delete;
R operator()(Args&&... args)
{
return (m_object->*m_pmethod)(std::forward<Args>(args)...);
}
};
...
SomeClass s;
auto d = Delegate<SomeClass, void, int, double>(&s, &SomeClass::Fun);
Gde sam prvi put naleteo na jedan snag, ne razumem zasto mu treba copy konstruktor ako ga ne poziva nigde?