Core/Signal: Add const-variant of member functions Connect overload

I do speak english very wheel


Former-commit-id: 4d688897a65ff6fcf793af8d10219bac9b28424a
This commit is contained in:
Lynix 2015-06-07 18:25:04 +02:00
parent 65c4409f9c
commit 358fab7115
2 changed files with 22 additions and 0 deletions

View File

@ -37,6 +37,8 @@ class NzSignal
Connection Connect(Callback&& func);
template<typename O> Connection Connect(O& object, void (O::*method)(Args...));
template<typename O> Connection Connect(O* object, void (O::*method)(Args...));
template<typename O> Connection Connect(const O& object, void (O::*method)(Args...) const);
template<typename O> Connection Connect(const O* object, void (O::*method)(Args...) const);
void operator()(Args... args) const;

View File

@ -58,6 +58,26 @@ typename NzSignal<Args...>::Connection NzSignal<Args...>::Connect(O* object, voi
});
}
template<typename... Args>
template<typename O>
typename NzSignal<Args...>::Connection NzSignal<Args...>::Connect(const O& object, void (O::*method) (Args...) const)
{
return Connect([&object, method] (Args&&... args)
{
return (object .* method) (std::forward<Args>(args)...);
});
}
template<typename... Args>
template<typename O>
typename NzSignal<Args...>::Connection NzSignal<Args...>::Connect(const O* object, void (O::*method)(Args...) const)
{
return Connect([object, method] (Args&&... args)
{
return (object ->* method) (std::forward<Args>(args)...);
});
}
template<typename... Args>
void NzSignal<Args...>::operator()(Args... args) const
{