From 358fab711568e2c54f54794f5946b0511670b4a4 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 7 Jun 2015 18:25:04 +0200 Subject: [PATCH] Core/Signal: Add const-variant of member functions Connect overload I do speak english very wheel Former-commit-id: 4d688897a65ff6fcf793af8d10219bac9b28424a --- include/Nazara/Core/Signal.hpp | 2 ++ include/Nazara/Core/Signal.inl | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/include/Nazara/Core/Signal.hpp b/include/Nazara/Core/Signal.hpp index bcb1d4be8..8440a6602 100644 --- a/include/Nazara/Core/Signal.hpp +++ b/include/Nazara/Core/Signal.hpp @@ -37,6 +37,8 @@ class NzSignal Connection Connect(Callback&& func); template Connection Connect(O& object, void (O::*method)(Args...)); template Connection Connect(O* object, void (O::*method)(Args...)); + template Connection Connect(const O& object, void (O::*method)(Args...) const); + template Connection Connect(const O* object, void (O::*method)(Args...) const); void operator()(Args... args) const; diff --git a/include/Nazara/Core/Signal.inl b/include/Nazara/Core/Signal.inl index 45fd740d8..e915bd0dc 100644 --- a/include/Nazara/Core/Signal.inl +++ b/include/Nazara/Core/Signal.inl @@ -58,6 +58,26 @@ typename NzSignal::Connection NzSignal::Connect(O* object, voi }); } +template +template +typename NzSignal::Connection NzSignal::Connect(const O& object, void (O::*method) (Args...) const) +{ + return Connect([&object, method] (Args&&... args) + { + return (object .* method) (std::forward(args)...); + }); +} + +template +template +typename NzSignal::Connection NzSignal::Connect(const O* object, void (O::*method)(Args...) const) +{ + return Connect([object, method] (Args&&... args) + { + return (object ->* method) (std::forward(args)...); + }); +} + template void NzSignal::operator()(Args... args) const {