[libsigc++2] C++11: signal_base: Add move operations.
- From: Murray Cumming <murrayc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libsigc++2] C++11: signal_base: Add move operations.
- Date: Tue, 1 Sep 2015 13:21:45 +0000 (UTC)
commit 2bd489c2f91a32b99c478ae8464f30360c3f7aad
Author: Murray Cumming <murrayc murrayc com>
Date: Tue Sep 1 15:19:45 2015 +0200
C++11: signal_base: Add move operations.
sigc++/signal_base.cc | 19 ++++++++++++++++++-
sigc++/signal_base.h | 6 +++++-
2 files changed, 23 insertions(+), 2 deletions(-)
---
diff --git a/sigc++/signal_base.cc b/sigc++/signal_base.cc
index 3caa332..20074ec 100644
--- a/sigc++/signal_base.cc
+++ b/sigc++/signal_base.cc
@@ -167,6 +167,13 @@ signal_base::signal_base(const signal_base& src)
impl_->reference();
}
+signal_base::signal_base(signal_base&& src)
+: trackable(std::move(src)),
+ impl_(std::move(src.impl_))
+{
+ src.impl_ = nullptr;
+}
+
signal_base::~signal_base()
{
if (impl_)
@@ -223,7 +230,7 @@ signal_base::iterator_type signal_base::erase(iterator_type i)
return impl()->erase(i);
}
-signal_base& signal_base::operator = (const signal_base& src)
+signal_base& signal_base::operator=(const signal_base& src)
{
if (src.impl_ == impl_) return *this;
@@ -241,6 +248,16 @@ signal_base& signal_base::operator = (const signal_base& src)
return *this;
}
+signal_base& signal_base::operator=(signal_base&& src)
+{
+ trackable::operator=(std::move(src));
+ impl_ = std::move(src.impl_);
+
+ src.impl_ = nullptr;
+
+ return *this;
+}
+
internal::signal_impl* signal_base::impl() const
{
if (!impl_) {
diff --git a/sigc++/signal_base.h b/sigc++/signal_base.h
index 100eede..5b3d668 100644
--- a/sigc++/signal_base.h
+++ b/sigc++/signal_base.h
@@ -284,9 +284,13 @@ struct SIGC_API signal_base : public trackable
signal_base(const signal_base& src);
+ signal_base(signal_base&& src);
+
~signal_base();
- signal_base& operator = (const signal_base& src);
+ signal_base& operator=(const signal_base& src);
+
+ signal_base& operator=(signal_base&& src);
/** Returns whether the list of slots is empty.
* @return @p true if the list of slots is empty.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]