===================================================================
@@ -79,7 +79,7 @@
template<typename _InputIterator>
unordered_map(_InputIterator __f, _InputIterator __l,
- size_type __n = 10,
+ size_type __n = 0,
const hasher& __hf = hasher(),
const key_equal& __eql = key_equal(),
const allocator_type& __a = allocator_type())
@@ -96,7 +96,7 @@
: _Base(std::move(__x)), _Safe_base() { }
unordered_map(initializer_list<value_type> __l,
- size_type __n = 10,
+ size_type __n = 0,
const hasher& __hf = hasher(),
const key_equal& __eql = key_equal(),
const allocator_type& __a = allocator_type())
@@ -338,7 +338,7 @@
template<typename _InputIterator>
unordered_multimap(_InputIterator __f, _InputIterator __l,
- size_type __n = 10,
+ size_type __n = 0,
const hasher& __hf = hasher(),
const key_equal& __eql = key_equal(),
const allocator_type& __a = allocator_type())
@@ -355,7 +355,7 @@
: _Base(std::move(__x)), _Safe_base() { }
unordered_multimap(initializer_list<value_type> __l,
- size_type __n = 10,
+ size_type __n = 0,
const hasher& __hf = hasher(),
const key_equal& __eql = key_equal(),
const allocator_type& __a = allocator_type())
===================================================================
@@ -79,7 +79,7 @@
template<typename _InputIterator>
unordered_set(_InputIterator __f, _InputIterator __l,
- size_type __n = 10,
+ size_type __n = 0,
const hasher& __hf = hasher(),
const key_equal& __eql = key_equal(),
const allocator_type& __a = allocator_type())
@@ -96,7 +96,7 @@
: _Base(std::move(__x)), _Safe_base() { }
unordered_set(initializer_list<value_type> __l,
- size_type __n = 10,
+ size_type __n = 0,
const hasher& __hf = hasher(),
const key_equal& __eql = key_equal(),
const allocator_type& __a = allocator_type())
@@ -334,7 +334,7 @@
template<typename _InputIterator>
unordered_multiset(_InputIterator __f, _InputIterator __l,
- size_type __n = 10,
+ size_type __n = 0,
const hasher& __hf = hasher(),
const key_equal& __eql = key_equal(),
const allocator_type& __a = allocator_type())
@@ -351,7 +351,7 @@
: _Base(std::move(__x)), _Safe_base() { }
unordered_multiset(initializer_list<value_type> __l,
- size_type __n = 10,
+ size_type __n = 0,
const hasher& __hf = hasher(),
const key_equal& __eql = key_equal(),
const allocator_type& __a = allocator_type())
===================================================================
@@ -86,10 +86,10 @@
template<typename _InputIterator>
unordered_map(_InputIterator __f, _InputIterator __l,
- size_type __n = 10,
- const hasher& __hf = hasher(),
- const key_equal& __eql = key_equal(),
- const allocator_type& __a = allocator_type())
+ size_type __n = 0,
+ const hasher& __hf = hasher(),
+ const key_equal& __eql = key_equal(),
+ const allocator_type& __a = allocator_type())
: _Base(__f, __l, __n, __hf, __eql, __a)
{
__profcxx_hashtable_construct(this, _Base::bucket_count());
@@ -111,7 +111,7 @@
}
unordered_map(initializer_list<value_type> __l,
- size_type __n = 10,
+ size_type __n = 0,
const hasher& __hf = hasher(),
const key_equal& __eql = key_equal(),
const allocator_type& __a = allocator_type())
@@ -314,19 +314,19 @@
explicit
unordered_multimap(size_type __n = 10,
- const hasher& __hf = hasher(),
- const key_equal& __eql = key_equal(),
- const allocator_type& __a = allocator_type())
+ const hasher& __hf = hasher(),
+ const key_equal& __eql = key_equal(),
+ const allocator_type& __a = allocator_type())
: _Base(__n, __hf, __eql, __a)
{
__profcxx_hashtable_construct(this, _Base::bucket_count());
}
template<typename _InputIterator>
unordered_multimap(_InputIterator __f, _InputIterator __l,
- size_type __n = 10,
- const hasher& __hf = hasher(),
- const key_equal& __eql = key_equal(),
- const allocator_type& __a = allocator_type())
+ size_type __n = 0,
+ const hasher& __hf = hasher(),
+ const key_equal& __eql = key_equal(),
+ const allocator_type& __a = allocator_type())
: _Base(__f, __l, __n, __hf, __eql, __a)
{
__profcxx_hashtable_construct(this, _Base::bucket_count());
@@ -345,7 +345,7 @@
}
unordered_multimap(initializer_list<value_type> __l,
- size_type __n = 10,
+ size_type __n = 0,
const hasher& __hf = hasher(),
const key_equal& __eql = key_equal(),
const allocator_type& __a = allocator_type())
===================================================================
@@ -85,10 +85,10 @@
template<typename _InputIterator>
unordered_set(_InputIterator __f, _InputIterator __l,
- size_type __n = 10,
- const hasher& __hf = hasher(),
- const key_equal& __eql = key_equal(),
- const allocator_type& __a = allocator_type())
+ size_type __n = 0,
+ const hasher& __hf = hasher(),
+ const key_equal& __eql = key_equal(),
+ const allocator_type& __a = allocator_type())
: _Base(__f, __l, __n, __hf, __eql, __a)
{
__profcxx_hashtable_construct(this, _Base::bucket_count());
@@ -110,7 +110,7 @@
}
unordered_set(initializer_list<value_type> __l,
- size_type __n = 10,
+ size_type __n = 0,
const hasher& __hf = hasher(),
const key_equal& __eql = key_equal(),
const allocator_type& __a = allocator_type())
@@ -302,9 +302,9 @@
explicit
unordered_multiset(size_type __n = 10,
- const hasher& __hf = hasher(),
- const key_equal& __eql = key_equal(),
- const allocator_type& __a = allocator_type())
+ const hasher& __hf = hasher(),
+ const key_equal& __eql = key_equal(),
+ const allocator_type& __a = allocator_type())
: _Base(__n, __hf, __eql, __a)
{
__profcxx_hashtable_construct(this, _Base::bucket_count());
@@ -312,10 +312,10 @@
template<typename _InputIterator>
unordered_multiset(_InputIterator __f, _InputIterator __l,
- size_type __n = 10,
- const hasher& __hf = hasher(),
- const key_equal& __eql = key_equal(),
- const allocator_type& __a = allocator_type())
+ size_type __n = 0,
+ const hasher& __hf = hasher(),
+ const key_equal& __eql = key_equal(),
+ const allocator_type& __a = allocator_type())
: _Base(__f, __l, __n, __hf, __eql, __a)
{
__profcxx_hashtable_construct(this, _Base::bucket_count());
@@ -334,7 +334,7 @@
}
unordered_multiset(initializer_list<value_type> __l,
- size_type __n = 10,
+ size_type __n = 0,
const hasher& __hf = hasher(),
const key_equal& __eql = key_equal(),
const allocator_type& __a = allocator_type())
===================================================================
@@ -212,8 +212,23 @@
_Hashtable(_Hashtable&&);
_Hashtable&
- operator=(const _Hashtable&);
+ operator=(const _Hashtable& __ht)
+ {
+ _Hashtable __tmp(__ht);
+ this->swap(__tmp);
+ return *this;
+ }
+ _Hashtable&
+ operator=(_Hashtable&& __ht)
+ {
+ // NB: DR 1204.
+ // NB: DR 675.
+ this->clear();
+ this->swap(__ht);
+ return *this;
+ }
+
~_Hashtable();
void swap(_Hashtable&);
@@ -668,22 +683,7 @@
typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
bool __chc, bool __cit, bool __uk>
_Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
- _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>&
- _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
_H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
- operator=(const _Hashtable& __ht)
- {
- _Hashtable __tmp(__ht);
- this->swap(__tmp);
- return *this;
- }
-
- template<typename _Key, typename _Value,
- typename _Allocator, typename _ExtractKey, typename _Equal,
- typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
- bool __chc, bool __cit, bool __uk>
- _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
- _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
~_Hashtable()
{
clear();
===================================================================
@@ -56,6 +56,7 @@
_Base;
public:
+ typedef typename _Base::value_type value_type;
typedef typename _Base::size_type size_type;
typedef typename _Base::hasher hasher;
typedef typename _Base::key_equal key_equal;
@@ -73,7 +74,7 @@
template<typename _InputIterator>
__unordered_map(_InputIterator __f, _InputIterator __l,
- size_type __n = 10,
+ size_type __n = 0,
const hasher& __hf = hasher(),
const key_equal& __eql = key_equal(),
const allocator_type& __a = allocator_type())
@@ -82,10 +83,24 @@
__eql, std::_Select1st<std::pair<const _Key, _Tp> >(), __a)
{ }
- __unordered_map(const __unordered_map& __x) = default;
+ __unordered_map(initializer_list<value_type> __l,
+ size_type __n = 0,
+ const hasher& __hf = hasher(),
+ const key_equal& __eql = key_equal(),
+ const allocator_type& __a = allocator_type())
+ : _Base(__l.begin(), __l.end(), __n, __hf,
+ __detail::_Mod_range_hashing(),
+ __detail::_Default_ranged_hash(),
+ __eql, std::_Select1st<std::pair<const _Key, _Tp> >(), __a)
+ { }
- __unordered_map(__unordered_map&& __x)
- : _Base(std::move(__x)) { }
+ __unordered_map&
+ operator=(initializer_list<value_type> __l)
+ {
+ this->clear();
+ this->insert(__l.begin(), __l.end());
+ return *this;
+ }
};
template<class _Key, class _Tp,
@@ -112,6 +127,7 @@
_Base;
public:
+ typedef typename _Base::value_type value_type;
typedef typename _Base::size_type size_type;
typedef typename _Base::hasher hasher;
typedef typename _Base::key_equal key_equal;
@@ -130,7 +146,7 @@
template<typename _InputIterator>
__unordered_multimap(_InputIterator __f, _InputIterator __l,
- typename _Base::size_type __n = 0,
+ size_type __n = 0,
const hasher& __hf = hasher(),
const key_equal& __eql = key_equal(),
const allocator_type& __a = allocator_type())
@@ -139,10 +155,24 @@
__eql, std::_Select1st<std::pair<const _Key, _Tp> >(), __a)
{ }
- __unordered_multimap(const __unordered_multimap& __x) = default;
+ __unordered_multimap(initializer_list<value_type> __l,
+ size_type __n = 0,
+ const hasher& __hf = hasher(),
+ const key_equal& __eql = key_equal(),
+ const allocator_type& __a = allocator_type())
+ : _Base(__l.begin(), __l.end(), __n, __hf,
+ __detail::_Mod_range_hashing(),
+ __detail::_Default_ranged_hash(),
+ __eql, std::_Select1st<std::pair<const _Key, _Tp> >(), __a)
+ { }
- __unordered_multimap(__unordered_multimap&& __x)
- : _Base(std::move(__x)) { }
+ __unordered_multimap&
+ operator=(initializer_list<value_type> __l)
+ {
+ this->clear();
+ this->insert(__l.begin(), __l.end());
+ return *this;
+ }
};
template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc,
@@ -243,40 +273,22 @@
template<typename _InputIterator>
unordered_map(_InputIterator __f, _InputIterator __l,
- size_type __n = 10,
+ size_type __n = 0,
const hasher& __hf = hasher(),
const key_equal& __eql = key_equal(),
const allocator_type& __a = allocator_type())
: _Base(__f, __l, __n, __hf, __eql, __a)
{ }
- unordered_map(const unordered_map& __x) = default;
-
- unordered_map(unordered_map&& __x)
- : _Base(std::move(__x)) { }
-
unordered_map(initializer_list<value_type> __l,
- size_type __n = 10,
+ size_type __n = 0,
const hasher& __hf = hasher(),
const key_equal& __eql = key_equal(),
const allocator_type& __a = allocator_type())
- : _Base(__l.begin(), __l.end(), __n, __hf, __eql, __a)
+ : _Base(__l.begin(), __l.end(), __n, __hf, __eql, __a)
{ }
unordered_map&
- operator=(const unordered_map& __x) = default;
-
- unordered_map&
- operator=(unordered_map&& __x)
- {
- // NB: DR 1204.
- // NB: DR 675.
- this->clear();
- this->swap(__x);
- return *this;
- }
-
- unordered_map&
operator=(initializer_list<value_type> __l)
{
this->clear();
@@ -327,43 +339,24 @@
: _Base(__n, __hf, __eql, __a)
{ }
-
template<typename _InputIterator>
unordered_multimap(_InputIterator __f, _InputIterator __l,
- typename _Base::size_type __n = 0,
+ size_type __n = 0,
const hasher& __hf = hasher(),
const key_equal& __eql = key_equal(),
const allocator_type& __a = allocator_type())
: _Base(__f, __l, __n, __hf, __eql, __a)
{ }
- unordered_multimap(const unordered_multimap& __x) = default;
-
- unordered_multimap(unordered_multimap&& __x)
- : _Base(std::move(__x)) { }
-
unordered_multimap(initializer_list<value_type> __l,
- size_type __n = 10,
+ size_type __n = 0,
const hasher& __hf = hasher(),
const key_equal& __eql = key_equal(),
const allocator_type& __a = allocator_type())
- : _Base(__l.begin(), __l.end(), __n, __hf, __eql, __a)
+ : _Base(__l.begin(), __l.end(), __n, __hf, __eql, __a)
{ }
unordered_multimap&
- operator=(const unordered_multimap& __x) = default;
-
- unordered_multimap&
- operator=(unordered_multimap&& __x)
- {
- // NB: DR 1204.
- // NB: DR 675.
- this->clear();
- this->swap(__x);
- return *this;
- }
-
- unordered_multimap&
operator=(initializer_list<value_type> __l)
{
this->clear();
===================================================================
@@ -56,6 +56,7 @@
_Base;
public:
+ typedef typename _Base::value_type value_type;
typedef typename _Base::size_type size_type;
typedef typename _Base::hasher hasher;
typedef typename _Base::key_equal key_equal;
@@ -68,24 +69,38 @@
const allocator_type& __a = allocator_type())
: _Base(__n, __hf, __detail::_Mod_range_hashing(),
__detail::_Default_ranged_hash(), __eql,
- std::_Identity<_Value>(), __a)
+ std::_Identity<value_type>(), __a)
{ }
template<typename _InputIterator>
__unordered_set(_InputIterator __f, _InputIterator __l,
- size_type __n = 10,
+ size_type __n = 0,
const hasher& __hf = hasher(),
const key_equal& __eql = key_equal(),
const allocator_type& __a = allocator_type())
: _Base(__f, __l, __n, __hf, __detail::_Mod_range_hashing(),
__detail::_Default_ranged_hash(), __eql,
- std::_Identity<_Value>(), __a)
+ std::_Identity<value_type>(), __a)
{ }
- __unordered_set(const __unordered_set& __x) = default;
+ __unordered_set(initializer_list<value_type> __l,
+ size_type __n = 0,
+ const hasher& __hf = hasher(),
+ const key_equal& __eql = key_equal(),
+ const allocator_type& __a = allocator_type())
+ : _Base(__l.begin(), __l.end(), __n, __hf,
+ __detail::_Mod_range_hashing(),
+ __detail::_Default_ranged_hash(), __eql,
+ std::_Identity<value_type>(), __a)
+ { }
- __unordered_set(__unordered_set&& __x)
- : _Base(std::move(__x)) { }
+ __unordered_set&
+ operator=(initializer_list<value_type> __l)
+ {
+ this->clear();
+ this->insert(__l.begin(), __l.end());
+ return *this;
+ }
};
template<class _Value,
@@ -110,6 +125,7 @@
_Base;
public:
+ typedef typename _Base::value_type value_type;
typedef typename _Base::size_type size_type;
typedef typename _Base::hasher hasher;
typedef typename _Base::key_equal key_equal;
@@ -122,25 +138,39 @@
const allocator_type& __a = allocator_type())
: _Base(__n, __hf, __detail::_Mod_range_hashing(),
__detail::_Default_ranged_hash(), __eql,
- std::_Identity<_Value>(), __a)
+ std::_Identity<value_type>(), __a)
{ }
template<typename _InputIterator>
__unordered_multiset(_InputIterator __f, _InputIterator __l,
- typename _Base::size_type __n = 0,
+ size_type __n = 0,
const hasher& __hf = hasher(),
const key_equal& __eql = key_equal(),
const allocator_type& __a = allocator_type())
: _Base(__f, __l, __n, __hf, __detail::_Mod_range_hashing(),
__detail::_Default_ranged_hash(), __eql,
- std::_Identity<_Value>(), __a)
+ std::_Identity<value_type>(), __a)
{ }
- __unordered_multiset(const __unordered_multiset& __x) = default;
+ __unordered_multiset(initializer_list<value_type> __l,
+ size_type __n = 0,
+ const hasher& __hf = hasher(),
+ const key_equal& __eql = key_equal(),
+ const allocator_type& __a = allocator_type())
+ : _Base(__l.begin(), __l.end(), __n, __hf,
+ __detail::_Mod_range_hashing(),
+ __detail::_Default_ranged_hash(), __eql,
+ std::_Identity<value_type>(), __a)
+ { }
- __unordered_multiset(__unordered_multiset&& __x)
- : _Base(std::move(__x)) { }
+ __unordered_multiset&
+ operator=(initializer_list<value_type> __l)
+ {
+ this->clear();
+ this->insert(__l.begin(), __l.end());
+ return *this;
+ }
};
template<class _Value, class _Hash, class _Pred, class _Alloc,
@@ -236,40 +266,22 @@
template<typename _InputIterator>
unordered_set(_InputIterator __f, _InputIterator __l,
- size_type __n = 10,
+ size_type __n = 0,
const hasher& __hf = hasher(),
const key_equal& __eql = key_equal(),
const allocator_type& __a = allocator_type())
: _Base(__f, __l, __n, __hf, __eql, __a)
{ }
- unordered_set(const unordered_set& __x) = default;
-
- unordered_set(unordered_set&& __x)
- : _Base(std::move(__x)) { }
-
unordered_set(initializer_list<value_type> __l,
- size_type __n = 10,
+ size_type __n = 0,
const hasher& __hf = hasher(),
const key_equal& __eql = key_equal(),
const allocator_type& __a = allocator_type())
- : _Base(__l.begin(), __l.end(), __n, __hf, __eql, __a)
+ : _Base(__l.begin(), __l.end(), __n, __hf, __eql, __a)
{ }
unordered_set&
- operator=(const unordered_set& __x) = default;
-
- unordered_set&
- operator=(unordered_set&& __x)
- {
- // NB: DR 1204.
- // NB: DR 675.
- this->clear();
- this->swap(__x);
- return *this;
- }
-
- unordered_set&
operator=(initializer_list<value_type> __l)
{
this->clear();
@@ -320,40 +332,22 @@
template<typename _InputIterator>
unordered_multiset(_InputIterator __f, _InputIterator __l,
- typename _Base::size_type __n = 0,
+ size_type __n = 0,
const hasher& __hf = hasher(),
const key_equal& __eql = key_equal(),
const allocator_type& __a = allocator_type())
: _Base(__f, __l, __n, __hf, __eql, __a)
{ }
- unordered_multiset(const unordered_multiset& __x) = default;
-
- unordered_multiset(unordered_multiset&& __x)
- : _Base(std::move(__x)) { }
-
unordered_multiset(initializer_list<value_type> __l,
- size_type __n = 10,
+ size_type __n = 0,
const hasher& __hf = hasher(),
const key_equal& __eql = key_equal(),
const allocator_type& __a = allocator_type())
- : _Base(__l.begin(), __l.end(), __n, __hf, __eql, __a)
+ : _Base(__l.begin(), __l.end(), __n, __hf, __eql, __a)
{ }
unordered_multiset&
- operator=(const unordered_multiset& __x) = default;
-
- unordered_multiset&
- operator=(unordered_multiset&& __x)
- {
- // NB: DR 1204.
- // NB: DR 675.
- this->clear();
- this->swap(__x);
- return *this;
- }
-
- unordered_multiset&
operator=(initializer_list<value_type> __l)
{
this->clear();