From a10de1bd6088b90efe9147ce6b489e3818e33d64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ion=20Gazta=C3=B1aga?= Date: Sat, 14 Oct 2017 12:06:21 +0200 Subject: [PATCH] Closes #25 in GitHub ("Document the behavior of move constructor for slist") --- include/boost/intrusive/bstree.hpp | 11 +++++++++-- include/boost/intrusive/hashtable.hpp | 11 +++++++++-- include/boost/intrusive/list.hpp | 11 +++++++++-- include/boost/intrusive/slist.hpp | 11 +++++++++-- 4 files changed, 36 insertions(+), 8 deletions(-) diff --git a/include/boost/intrusive/bstree.hpp b/include/boost/intrusive/bstree.hpp index ac67e86..410eedf 100644 --- a/include/boost/intrusive/bstree.hpp +++ b/include/boost/intrusive/bstree.hpp @@ -725,15 +725,22 @@ class bstree_impl this->insert_equal(b, e); } - //! Effects: to-do + //! Effects: Constructs a container moving resources from another container. + //! Internal comparison object and value traits are move constructed and + //! nodes belonging to x (except the node representing the "end") are linked to *this. //! + //! Complexity: Constant. + //! + //! Throws: If value_traits::node_traits::node's + //! move constructor throws (this does not happen with predefined Boost.Intrusive hooks) + //! or the move constructor of the comparison objet throws. bstree_impl(BOOST_RV_REF(bstree_impl) x) : data_type(::boost::move(x.comp()), ::boost::move(x.get_value_traits())) { this->swap(x); } - //! Effects: to-do + //! Effects: Equivalent to swap //! BOOST_INTRUSIVE_FORCEINLINE bstree_impl& operator=(BOOST_RV_REF(bstree_impl) x) { this->swap(x); return *this; } diff --git a/include/boost/intrusive/hashtable.hpp b/include/boost/intrusive/hashtable.hpp index bae9d52..35ba774 100644 --- a/include/boost/intrusive/hashtable.hpp +++ b/include/boost/intrusive/hashtable.hpp @@ -1798,8 +1798,15 @@ class hashtable_impl this->insert_equal(b, e); } - //! Effects: to-do + //! Effects: Constructs a container moving resources from another container. + //! Internal value traits, bucket traits, hasher and comparison are move constructed and + //! nodes belonging to x are linked to *this. //! + //! Complexity: Constant. + //! + //! Throws: If value_traits::node_traits::node's + //! move constructor throws (this does not happen with predefined Boost.Intrusive hooks) + //! or the move constructor of value traits, bucket traits, hasher or comparison throws. hashtable_impl(BOOST_RV_REF(hashtable_impl) x) : internal_type( ::boost::move(x.priv_value_traits()) , ::boost::move(x.priv_bucket_traits()) @@ -1815,7 +1822,7 @@ class hashtable_impl x.priv_split_traits().set_size(size_type(0)); } - //! Effects: to-do + //! Effects: Equivalnet to swap. //! hashtable_impl& operator=(BOOST_RV_REF(hashtable_impl) x) { this->swap(x); return *this; } diff --git a/include/boost/intrusive/list.hpp b/include/boost/intrusive/list.hpp index a955c44..71eac5c 100644 --- a/include/boost/intrusive/list.hpp +++ b/include/boost/intrusive/list.hpp @@ -215,8 +215,15 @@ class list_impl this->insert(this->cend(), b, e); } - //! Effects: to-do + //! Effects: Constructs a container moving resources from another container. + //! Internal value traits are move constructed and + //! nodes belonging to x (except the node representing the "end") are linked to *this. //! + //! Complexity: Constant. + //! + //! Throws: If value_traits::node_traits::node's + //! move constructor throws (this does not happen with predefined Boost.Intrusive hooks) + //! or the move constructor of value traits throws. list_impl(BOOST_RV_REF(list_impl) x) : data_(::boost::move(x.priv_value_traits())) { @@ -226,7 +233,7 @@ class list_impl this->swap(x); } - //! Effects: to-do + //! Effects: Equivalent to swap //! list_impl& operator=(BOOST_RV_REF(list_impl) x) { this->swap(x); return *this; } diff --git a/include/boost/intrusive/slist.hpp b/include/boost/intrusive/slist.hpp index f34350d..1f7ace1 100644 --- a/include/boost/intrusive/slist.hpp +++ b/include/boost/intrusive/slist.hpp @@ -338,8 +338,15 @@ class slist_impl this->insert_after(this->cbefore_begin(), b, e); } - //! Effects: to-do + //! Effects: Constructs a container moving resources from another container. + //! Internal value traits are move constructed and + //! nodes belonging to x (except the node representing the "end") are linked to *this. //! + //! Complexity: Constant. + //! + //! Throws: If value_traits::node_traits::node's + //! move constructor throws (this does not happen with predefined Boost.Intrusive hooks) + //! or the move constructor of value traits throws. slist_impl(BOOST_RV_REF(slist_impl) x) : data_(::boost::move(x.priv_value_traits())) { @@ -348,7 +355,7 @@ class slist_impl this->swap(x); } - //! Effects: to-do + //! Effects: Equivalent to swap //! slist_impl& operator=(BOOST_RV_REF(slist_impl) x) { this->swap(x); return *this; }