forked from boostorg/intrusive
Fixes Boost Trac #11865: "Intrusive list explicit ctor error with Clang 3.6 (C++11/14)"
This commit is contained in:
@@ -3839,6 +3839,7 @@ to be inserted in intrusive containers are allocated using `std::vector` or `std
|
||||
|
||||
* Fixed bugs:
|
||||
* [@https://svn.boost.org/trac/boost/ticket/11832 Boost Trac #11832: ['clang-cl + boost intrusive = miscompile]]
|
||||
* [@https://svn.boost.org/trac/boost/ticket/11865 Boost Trac #11865: ['Intrusive list explicit ctor error with Clang 3.6 (C++11/14)]]
|
||||
|
||||
[endsect]
|
||||
|
||||
|
@@ -82,9 +82,13 @@ class avl_set_impl
|
||||
|
||||
public:
|
||||
|
||||
//! @copydoc ::boost::intrusive::avltree::avltree()
|
||||
avl_set_impl()
|
||||
: tree_type()
|
||||
{}
|
||||
|
||||
//! @copydoc ::boost::intrusive::avltree::avltree(const key_compare &,const value_traits &)
|
||||
explicit avl_set_impl( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
explicit avl_set_impl( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: tree_type(cmp, v_traits)
|
||||
{}
|
||||
|
||||
@@ -476,8 +480,11 @@ class avl_set
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
explicit avl_set( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
avl_set()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
explicit avl_set( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
@@ -573,9 +580,13 @@ class avl_multiset_impl
|
||||
static const bool constant_time_size = tree_type::constant_time_size;
|
||||
|
||||
public:
|
||||
//! @copydoc ::boost::intrusive::avltree::avltree()
|
||||
avl_multiset_impl()
|
||||
: tree_type()
|
||||
{}
|
||||
|
||||
//! @copydoc ::boost::intrusive::avltree::avltree(const key_compare &,const value_traits &)
|
||||
explicit avl_multiset_impl( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
explicit avl_multiset_impl( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: tree_type(cmp, v_traits)
|
||||
{}
|
||||
|
||||
@@ -936,8 +947,11 @@ class avl_multiset
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
explicit avl_multiset( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
avl_multiset()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
explicit avl_multiset( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
|
@@ -121,10 +121,13 @@ class avltree_impl
|
||||
|
||||
typedef typename implementation_defined::insert_commit_data insert_commit_data;
|
||||
|
||||
//! @copydoc ::boost::intrusive::bstree::bstree()
|
||||
avltree_impl()
|
||||
: tree_type()
|
||||
{}
|
||||
|
||||
//! @copydoc ::boost::intrusive::bstree::bstree(const key_compare &,const value_traits &)
|
||||
explicit avltree_impl( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
explicit avltree_impl( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: tree_type(cmp, v_traits)
|
||||
{}
|
||||
|
||||
@@ -507,8 +510,11 @@ class avltree
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
explicit avltree( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
avltree()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
explicit avltree( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
|
@@ -80,9 +80,13 @@ class bs_set_impl
|
||||
static const bool constant_time_size = tree_type::constant_time_size;
|
||||
|
||||
public:
|
||||
//! @copydoc ::boost::intrusive::bstree::bstree()
|
||||
bs_set_impl()
|
||||
: tree_type()
|
||||
{}
|
||||
|
||||
//! @copydoc ::boost::intrusive::bstree::bstree(const key_compare &,const value_traits &)
|
||||
explicit bs_set_impl( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
explicit bs_set_impl( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: tree_type(cmp, v_traits)
|
||||
{}
|
||||
|
||||
@@ -473,8 +477,11 @@ class bs_set
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
explicit bs_set( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
bs_set()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
explicit bs_set( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
@@ -569,9 +576,13 @@ class bs_multiset_impl
|
||||
static const bool constant_time_size = tree_type::constant_time_size;
|
||||
|
||||
public:
|
||||
//! @copydoc ::boost::intrusive::bstree::bstree()
|
||||
bs_multiset_impl()
|
||||
: tree_type()
|
||||
{}
|
||||
|
||||
//! @copydoc ::boost::intrusive::bstree::bstree(const key_compare &,const value_traits &)
|
||||
explicit bs_multiset_impl( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
explicit bs_multiset_impl( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: tree_type(cmp, v_traits)
|
||||
{}
|
||||
|
||||
@@ -932,8 +943,11 @@ class bs_multiset
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
explicit bs_multiset( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
bs_multiset()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
explicit bs_multiset( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
|
@@ -679,8 +679,18 @@ class bstree_impl
|
||||
//! <b>Throws</b>: If value_traits::node_traits::node
|
||||
//! constructor throws (this does not happen with predefined Boost.Intrusive hooks)
|
||||
//! or the copy constructor of the key_compare object throws. Basic guarantee.
|
||||
explicit bstree_impl( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
bstree_impl()
|
||||
: data_type(key_compare(), value_traits())
|
||||
{}
|
||||
|
||||
//! <b>Effects</b>: Constructs an empty container with given comparison and traits.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
//!
|
||||
//! <b>Throws</b>: If value_traits::node_traits::node
|
||||
//! constructor throws (this does not happen with predefined Boost.Intrusive hooks)
|
||||
//! or the copy constructor of the key_compare object throws. Basic guarantee.
|
||||
explicit bstree_impl( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: data_type(cmp, v_traits)
|
||||
{}
|
||||
|
||||
@@ -2052,8 +2062,11 @@ class bstree
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
bstree( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
bstree()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
explicit bstree( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
|
@@ -176,7 +176,20 @@ class list_impl
|
||||
//!
|
||||
//! <b>Throws</b>: If value_traits::node_traits::node
|
||||
//! constructor throws (this does not happen with predefined Boost.Intrusive hooks).
|
||||
explicit list_impl(const value_traits &v_traits = value_traits())
|
||||
list_impl()
|
||||
: data_(value_traits())
|
||||
{
|
||||
this->priv_size_traits().set_size(size_type(0));
|
||||
node_algorithms::init_header(this->get_root_node());
|
||||
}
|
||||
|
||||
//! <b>Effects</b>: constructs an empty list.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant
|
||||
//!
|
||||
//! <b>Throws</b>: If value_traits::node_traits::node
|
||||
//! constructor throws (this does not happen with predefined Boost.Intrusive hooks).
|
||||
explicit list_impl(const value_traits &v_traits)
|
||||
: data_(v_traits)
|
||||
{
|
||||
this->priv_size_traits().set_size(size_type(0));
|
||||
@@ -1455,7 +1468,11 @@ class list
|
||||
typedef typename Base::iterator iterator;
|
||||
typedef typename Base::const_iterator const_iterator;
|
||||
|
||||
explicit list(const value_traits &v_traits = value_traits())
|
||||
list()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
explicit list(const value_traits &v_traits)
|
||||
: Base(v_traits)
|
||||
{}
|
||||
|
||||
|
@@ -121,9 +121,13 @@ class rbtree_impl
|
||||
|
||||
typedef typename implementation_defined::insert_commit_data insert_commit_data;
|
||||
|
||||
//! @copydoc ::boost::intrusive::bstree::bstree()
|
||||
rbtree_impl()
|
||||
: tree_type()
|
||||
{}
|
||||
|
||||
//! @copydoc ::boost::intrusive::bstree::bstree(const key_compare &,const value_traits &)
|
||||
explicit rbtree_impl( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
explicit rbtree_impl( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: tree_type(cmp, v_traits)
|
||||
{}
|
||||
|
||||
@@ -509,8 +513,11 @@ class rbtree
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
explicit rbtree( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
rbtree()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
explicit rbtree( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
|
@@ -83,9 +83,13 @@ class set_impl
|
||||
static const bool constant_time_size = tree_type::constant_time_size;
|
||||
|
||||
public:
|
||||
//! @copydoc ::boost::intrusive::rbtree::rbtree()
|
||||
set_impl()
|
||||
: tree_type()
|
||||
{}
|
||||
|
||||
//! @copydoc ::boost::intrusive::rbtree::rbtree(const key_compare &,const value_traits &)
|
||||
explicit set_impl( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
explicit set_impl( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: tree_type(cmp, v_traits)
|
||||
{}
|
||||
|
||||
@@ -476,8 +480,11 @@ class set
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
explicit set( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
set()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
explicit set( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
@@ -573,9 +580,13 @@ class multiset_impl
|
||||
static const bool constant_time_size = tree_type::constant_time_size;
|
||||
|
||||
public:
|
||||
//! @copydoc ::boost::intrusive::rbtree::rbtree()
|
||||
multiset_impl()
|
||||
: tree_type()
|
||||
{}
|
||||
|
||||
//! @copydoc ::boost::intrusive::rbtree::rbtree(const key_compare &,const value_traits &)
|
||||
explicit multiset_impl( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
explicit multiset_impl( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: tree_type(cmp, v_traits)
|
||||
{}
|
||||
|
||||
@@ -936,8 +947,11 @@ class multiset
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
multiset( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
multiset()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
explicit multiset( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
|
@@ -81,9 +81,13 @@ class sg_set_impl
|
||||
static const bool constant_time_size = tree_type::constant_time_size;
|
||||
|
||||
public:
|
||||
//! @copydoc ::boost::intrusive::sgtree::sgtree()
|
||||
sg_set_impl()
|
||||
: tree_type()
|
||||
{}
|
||||
|
||||
//! @copydoc ::boost::intrusive::sgtree::sgtree(const key_compare &,const value_traits &)
|
||||
explicit sg_set_impl( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
explicit sg_set_impl( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: tree_type(cmp, v_traits)
|
||||
{}
|
||||
|
||||
@@ -487,8 +491,11 @@ class sg_set
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
explicit sg_set( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
sg_set()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
explicit sg_set( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
@@ -584,9 +591,13 @@ class sg_multiset_impl
|
||||
static const bool constant_time_size = tree_type::constant_time_size;
|
||||
|
||||
public:
|
||||
//! @copydoc ::boost::intrusive::sgtree::sgtree()
|
||||
sg_multiset_impl()
|
||||
: tree_type()
|
||||
{}
|
||||
|
||||
//! @copydoc ::boost::intrusive::sgtree::sgtree(const key_compare &,const value_traits &)
|
||||
explicit sg_multiset_impl( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
explicit sg_multiset_impl( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: tree_type(cmp, v_traits)
|
||||
{}
|
||||
|
||||
@@ -960,8 +971,11 @@ class sg_multiset
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
sg_multiset( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
sg_multiset()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
explicit sg_multiset( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
|
@@ -281,9 +281,13 @@ class sgtree_impl
|
||||
|
||||
typedef BOOST_INTRUSIVE_IMPDEF(typename node_algorithms::insert_commit_data) insert_commit_data;
|
||||
|
||||
//! @copydoc ::boost::intrusive::bstree::bstree()
|
||||
sgtree_impl()
|
||||
: tree_type()
|
||||
{}
|
||||
|
||||
//! @copydoc ::boost::intrusive::bstree::bstree(const key_compare &,const value_traits &)
|
||||
explicit sgtree_impl( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
explicit sgtree_impl( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: tree_type(cmp, v_traits)
|
||||
{}
|
||||
|
||||
@@ -934,8 +938,11 @@ class sgtree
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
explicit sgtree( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
sgtree()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
explicit sgtree(const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
|
@@ -307,7 +307,17 @@ class slist_impl
|
||||
//!
|
||||
//! <b>Throws</b>: If value_traits::node_traits::node
|
||||
//! constructor throws (this does not happen with predefined Boost.Intrusive hooks).
|
||||
explicit slist_impl(const value_traits &v_traits = value_traits())
|
||||
slist_impl()
|
||||
: data_(value_traits())
|
||||
{ this->set_default_constructed_state(); }
|
||||
|
||||
//! <b>Effects</b>: constructs an empty list.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant
|
||||
//!
|
||||
//! <b>Throws</b>: If value_traits::node_traits::node
|
||||
//! constructor throws (this does not happen with predefined Boost.Intrusive hooks).
|
||||
explicit slist_impl(const value_traits &v_traits)
|
||||
: data_(v_traits)
|
||||
{ this->set_default_constructed_state(); }
|
||||
|
||||
@@ -2190,7 +2200,11 @@ class slist
|
||||
typedef typename Base::size_type size_type;
|
||||
typedef typename Base::node_ptr node_ptr;
|
||||
|
||||
explicit slist(const value_traits &v_traits = value_traits())
|
||||
slist()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
explicit slist(const value_traits &v_traits)
|
||||
: Base(v_traits)
|
||||
{}
|
||||
|
||||
|
@@ -81,9 +81,13 @@ class splay_set_impl
|
||||
static const bool constant_time_size = tree_type::constant_time_size;
|
||||
|
||||
public:
|
||||
//! @copydoc ::boost::intrusive::splaytree::splaytree()
|
||||
splay_set_impl()
|
||||
: tree_type()
|
||||
{}
|
||||
|
||||
//! @copydoc ::boost::intrusive::splaytree::splaytree(const key_compare &,const value_traits &)
|
||||
explicit splay_set_impl( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
explicit splay_set_impl( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: tree_type(cmp, v_traits)
|
||||
{}
|
||||
|
||||
@@ -497,8 +501,11 @@ class splay_set
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
explicit splay_set( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
splay_set()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
explicit splay_set( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
@@ -594,9 +601,13 @@ class splay_multiset_impl
|
||||
static const bool constant_time_size = tree_type::constant_time_size;
|
||||
|
||||
public:
|
||||
//! @copydoc ::boost::intrusive::splaytree::splaytree()
|
||||
splay_multiset_impl()
|
||||
: tree_type()
|
||||
{}
|
||||
|
||||
//! @copydoc ::boost::intrusive::splaytree::splaytree(const key_compare &,const value_traits &)
|
||||
explicit splay_multiset_impl( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
explicit splay_multiset_impl(const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: tree_type(cmp, v_traits)
|
||||
{}
|
||||
|
||||
@@ -973,8 +984,11 @@ class splay_multiset
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
explicit splay_multiset( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
splay_multiset()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
explicit splay_multiset( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
|
@@ -111,9 +111,13 @@ class splaytree_impl
|
||||
|
||||
typedef typename implementation_defined::insert_commit_data insert_commit_data;
|
||||
|
||||
//! @copydoc ::boost::intrusive::bstree::bstree()
|
||||
splaytree_impl()
|
||||
: tree_type()
|
||||
{}
|
||||
|
||||
//! @copydoc ::boost::intrusive::bstree::bstree(const key_compare &,const value_traits &)
|
||||
explicit splaytree_impl( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
explicit splaytree_impl( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: tree_type(cmp, v_traits)
|
||||
{}
|
||||
|
||||
@@ -584,8 +588,11 @@ class splaytree
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
explicit splaytree( const key_compare &cmp = key_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
splaytree()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
explicit splaytree( const key_compare &cmp, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, v_traits)
|
||||
{}
|
||||
|
||||
|
@@ -159,7 +159,18 @@ class treap_impl
|
||||
//! <b>Throws</b>: If value_traits::node_traits::node
|
||||
//! constructor throws (this does not happen with predefined Boost.Intrusive hooks)
|
||||
//! or the copy constructor of the value_compare/priority_compare objects throw. Basic guarantee.
|
||||
explicit treap_impl( const key_compare &cmp = key_compare()
|
||||
treap_impl()
|
||||
: tree_type(), prio_base(priority_compare())
|
||||
{}
|
||||
|
||||
//! <b>Effects</b>: Constructs an empty container.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
//!
|
||||
//! <b>Throws</b>: If value_traits::node_traits::node
|
||||
//! constructor throws (this does not happen with predefined Boost.Intrusive hooks)
|
||||
//! or the copy constructor of the value_compare/priority_compare objects throw. Basic guarantee.
|
||||
explicit treap_impl( const key_compare &cmp
|
||||
, const priority_compare &pcmp = priority_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
: tree_type(cmp, v_traits), prio_base(pcmp)
|
||||
@@ -1147,8 +1158,11 @@ class treap
|
||||
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
treap()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
explicit treap( const key_compare &cmp = key_compare()
|
||||
explicit treap( const key_compare &cmp
|
||||
, const priority_compare &pcmp = priority_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, pcmp, v_traits)
|
||||
|
@@ -83,31 +83,19 @@ class treap_set_impl
|
||||
static const bool constant_time_size = implementation_defined::constant_time_size;
|
||||
|
||||
public:
|
||||
//! <b>Effects</b>: Constructs an empty treap_set.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
//!
|
||||
//! <b>Throws</b>: If value_traits::node_traits::node
|
||||
//! constructor throws (this does not happen with predefined Boost.Intrusive hooks)
|
||||
//! or the copy constructor of the key_compare object throws.
|
||||
explicit treap_set_impl( const key_compare &cmp = key_compare()
|
||||
//! @copydoc ::boost::intrusive::treap::treap()
|
||||
treap_set_impl()
|
||||
: tree_type()
|
||||
{}
|
||||
|
||||
//! @copydoc ::boost::intrusive::treap::treap(const key_compare &,const priority_compare &,const value_traits &)
|
||||
explicit treap_set_impl( const key_compare &cmp
|
||||
, const priority_compare &pcmp = priority_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
: tree_type(cmp, pcmp, v_traits)
|
||||
{}
|
||||
|
||||
//! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type.
|
||||
//! cmp must be a comparison function that induces a strict weak ordering.
|
||||
//!
|
||||
//! <b>Effects</b>: Constructs an empty treap_set and inserts elements from
|
||||
//! [b, e).
|
||||
//!
|
||||
//! <b>Complexity</b>: Linear in N if [b, e) is already sorted using
|
||||
//! comp and otherwise N * log N, where N is distance(last, first).
|
||||
//!
|
||||
//! <b>Throws</b>: If value_traits::node_traits::node
|
||||
//! constructor throws (this does not happen with predefined Boost.Intrusive hooks)
|
||||
//! or the copy constructor/operator() of the key_compare object throws.
|
||||
//! @copydoc ::boost::intrusive::treap::treap(bool,Iterator,Iterator,const key_compare &,const priority_compare &,const value_traits &)
|
||||
template<class Iterator>
|
||||
treap_set_impl( Iterator b, Iterator e
|
||||
, const key_compare &cmp = key_compare()
|
||||
@@ -368,21 +356,21 @@ class treap_set_impl
|
||||
|
||||
#endif // #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
|
||||
|
||||
//! @copydoc ::boost::intrusive::rbtree::equal_range(const key_type &)
|
||||
//! @copydoc ::boost::intrusive::treap::equal_range(const key_type &)
|
||||
std::pair<iterator,iterator> equal_range(const key_type &key)
|
||||
{ return this->tree_type::lower_bound_range(key); }
|
||||
|
||||
//! @copydoc ::boost::intrusive::rbtree::equal_range(const KeyType&,KeyTypeKeyCompare)
|
||||
//! @copydoc ::boost::intrusive::treap::equal_range(const KeyType&,KeyTypeKeyCompare)
|
||||
template<class KeyType, class KeyTypeKeyCompare>
|
||||
std::pair<iterator,iterator> equal_range(const KeyType& key, KeyTypeKeyCompare comp)
|
||||
{ return this->tree_type::equal_range(key, comp); }
|
||||
|
||||
//! @copydoc ::boost::intrusive::rbtree::equal_range(const key_type &)const
|
||||
//! @copydoc ::boost::intrusive::treap::equal_range(const key_type &)const
|
||||
std::pair<const_iterator, const_iterator>
|
||||
equal_range(const key_type &key) const
|
||||
{ return this->tree_type::lower_bound_range(key); }
|
||||
|
||||
//! @copydoc ::boost::intrusive::rbtree::equal_range(const KeyType&,KeyTypeKeyCompare)const
|
||||
//! @copydoc ::boost::intrusive::treap::equal_range(const KeyType&,KeyTypeKeyCompare)const
|
||||
template<class KeyType, class KeyTypeKeyCompare>
|
||||
std::pair<const_iterator, const_iterator>
|
||||
equal_range(const KeyType& key, KeyTypeKeyCompare comp) const
|
||||
@@ -508,7 +496,11 @@ class treap_set
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
explicit treap_set( const key_compare &cmp = key_compare()
|
||||
treap_set()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
explicit treap_set( const key_compare &cmp
|
||||
, const priority_compare &pcmp = priority_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, pcmp, v_traits)
|
||||
@@ -608,31 +600,20 @@ class treap_multiset_impl
|
||||
static const bool constant_time_size = implementation_defined::constant_time_size;
|
||||
|
||||
public:
|
||||
//! <b>Effects</b>: Constructs an empty treap_multiset.
|
||||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
//!
|
||||
//! <b>Throws</b>: If value_traits::node_traits::node
|
||||
//! constructor throws (this does not happen with predefined Boost.Intrusive hooks)
|
||||
//! or the copy constructor of the key_compare object throws.
|
||||
explicit treap_multiset_impl( const key_compare &cmp = key_compare()
|
||||
|
||||
//! @copydoc ::boost::intrusive::treap::treap()
|
||||
treap_multiset_impl()
|
||||
: tree_type()
|
||||
{}
|
||||
|
||||
//! @copydoc ::boost::intrusive::treap::treap(const key_compare &,const priority_compare &,const value_traits &)
|
||||
explicit treap_multiset_impl( const key_compare &cmp
|
||||
, const priority_compare &pcmp = priority_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
: tree_type(cmp, pcmp, v_traits)
|
||||
{}
|
||||
|
||||
//! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type.
|
||||
//! cmp must be a comparison function that induces a strict weak ordering.
|
||||
//!
|
||||
//! <b>Effects</b>: Constructs an empty treap_multiset and inserts elements from
|
||||
//! [b, e).
|
||||
//!
|
||||
//! <b>Complexity</b>: Linear in N if [b, e) is already sorted using
|
||||
//! comp and otherwise N * log N, where N is distance(last, first).
|
||||
//!
|
||||
//! <b>Throws</b>: If value_traits::node_traits::node
|
||||
//! constructor throws (this does not happen with predefined Boost.Intrusive hooks)
|
||||
//! or the copy constructor/operator() of the key_compare object throws.
|
||||
//! @copydoc ::boost::intrusive::treap::treap(bool,Iterator,Iterator,const key_compare &,const priority_compare &,const value_traits &)
|
||||
template<class Iterator>
|
||||
treap_multiset_impl( Iterator b, Iterator e
|
||||
, const key_compare &cmp = key_compare()
|
||||
@@ -1000,7 +981,11 @@ class treap_multiset
|
||||
//Assert if passed value traits are compatible with the type
|
||||
BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
||||
|
||||
explicit treap_multiset( const key_compare &cmp = key_compare()
|
||||
treap_multiset()
|
||||
: Base()
|
||||
{}
|
||||
|
||||
explicit treap_multiset( const key_compare &cmp
|
||||
, const priority_compare &pcmp = priority_compare()
|
||||
, const value_traits &v_traits = value_traits())
|
||||
: Base(cmp, pcmp, v_traits)
|
||||
|
Reference in New Issue
Block a user