[gtkmm] C++11: Object: Add move operations.



commit 15b794ce00c35438c606ede3e56350f9bc8e8ff9
Author: Murray Cumming <murrayc murrayc com>
Date:   Sat Aug 22 12:43:48 2015 +0200

    C++11: Object: Add move operations.

 gtk/gtkmm/object.cc |   15 +++++++++++++++
 gtk/gtkmm/object.h  |    3 +++
 2 files changed, 18 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkmm/object.cc b/gtk/gtkmm/object.cc
index 12d8ae3..96ac9ff 100644
--- a/gtk/gtkmm/object.cc
+++ b/gtk/gtkmm/object.cc
@@ -155,6 +155,21 @@ void Object::_release_c_instance()
   }
 }
 
+Object::Object(Object&& src) noexcept
+: Glib::Object(std::move(src)),
+  referenced_(std::move(src.referenced_)),
+  gobject_disposed_(std::move(src.gobject_disposed_))
+{}
+
+Object& Object::operator=(Object&& src) noexcept
+{
+  Glib::Object::operator=(std::move(src));
+  referenced_ = std::move(src.referenced_);
+  gobject_disposed_ = std::move(src.gobject_disposed_);
+  return *this;
+}
+
+
 Object::~Object()
 {
   #ifdef GLIBMM_DEBUG_REFCOUNTING
diff --git a/gtk/gtkmm/object.h b/gtk/gtkmm/object.h
index 8c58843..5aa1c33 100644
--- a/gtk/gtkmm/object.h
+++ b/gtk/gtkmm/object.h
@@ -63,6 +63,9 @@ class GTKMM_API Object : public Glib::Object
   typedef GObjectClass BaseClassType;
 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
 
+  Object(Object&& src) noexcept;
+  Object& operator=(Object&& src) noexcept;
+
   virtual ~Object();
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]