stl_list.h (list<>::_M_create_node<>(_Args&&...), [...]): Add.
2007-11-11 Paolo Carlini <pcarlini@suse.de> * include/bits/stl_list.h (list<>::_M_create_node<>(_Args&&...), _M_insert<>(iterator, _Args&&...), push_front<>(_Args&&...), push_back<>(_Args&&...)): Add. (list<>::emplace<>(iterator, _Args&&...), insert(iterator, value_type&&)): Declare. (splice(iterator, list&&), splice(iterator, list&&, iterator), splice(iterator, list&&, iterator, iterator), merge(list&&), merge(list&&, _StrictWeakOrdering)): Add C++0x signatures. * include/bits/list.tcc (list<>::emplace<>(iterator, _Args&&...), insert(iterator, value_type&&)): Define. * include/debug/list (list<>::emplace<>(iterator, _Args&&...), insert(iterator, value_type&&)): Add. (splice(iterator, list&&), splice(iterator, list&&, iterator), splice(iterator, list&&, iterator, iterator), merge(list&&), merge(list&&, _StrictWeakOrdering)): Add C++0x signatures, use _GLIBCXX_MOVE. From-SVN: r130082
This commit is contained in:
parent
d4b5dc8945
commit
84237dbbf3
@ -1,3 +1,22 @@
|
|||||||
|
2007-11-11 Paolo Carlini <pcarlini@suse.de>
|
||||||
|
|
||||||
|
* include/bits/stl_list.h (list<>::_M_create_node<>(_Args&&...),
|
||||||
|
_M_insert<>(iterator, _Args&&...), push_front<>(_Args&&...),
|
||||||
|
push_back<>(_Args&&...)): Add.
|
||||||
|
(list<>::emplace<>(iterator, _Args&&...), insert(iterator,
|
||||||
|
value_type&&)): Declare.
|
||||||
|
(splice(iterator, list&&), splice(iterator, list&&, iterator),
|
||||||
|
splice(iterator, list&&, iterator, iterator), merge(list&&),
|
||||||
|
merge(list&&, _StrictWeakOrdering)): Add C++0x signatures.
|
||||||
|
* include/bits/list.tcc (list<>::emplace<>(iterator, _Args&&...),
|
||||||
|
insert(iterator, value_type&&)): Define.
|
||||||
|
* include/debug/list (list<>::emplace<>(iterator, _Args&&...),
|
||||||
|
insert(iterator, value_type&&)): Add.
|
||||||
|
(splice(iterator, list&&), splice(iterator, list&&, iterator),
|
||||||
|
splice(iterator, list&&, iterator, iterator), merge(list&&),
|
||||||
|
merge(list&&, _StrictWeakOrdering)): Add C++0x signatures, use
|
||||||
|
_GLIBCXX_MOVE.
|
||||||
|
|
||||||
2007-11-09 Paolo Carlini <pcarlini@suse.de>
|
2007-11-09 Paolo Carlini <pcarlini@suse.de>
|
||||||
|
|
||||||
* include/bits/stl_deque.h (deque<>::operator=(deque&&)): Implement
|
* include/bits/stl_deque.h (deque<>::operator=(deque&&)): Implement
|
||||||
|
@ -80,6 +80,19 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
template<typename _Tp, typename _Alloc>
|
||||||
|
template<typename... _Args>
|
||||||
|
typename list<_Tp, _Alloc>::iterator
|
||||||
|
list<_Tp, _Alloc>::
|
||||||
|
emplace(iterator __position, _Args&&... __args)
|
||||||
|
{
|
||||||
|
_Node* __tmp = _M_create_node(std::forward<_Args>(__args)...);
|
||||||
|
__tmp->hook(__position._M_node);
|
||||||
|
return iterator(__tmp);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
template<typename _Tp, typename _Alloc>
|
template<typename _Tp, typename _Alloc>
|
||||||
typename list<_Tp, _Alloc>::iterator
|
typename list<_Tp, _Alloc>::iterator
|
||||||
list<_Tp, _Alloc>::
|
list<_Tp, _Alloc>::
|
||||||
@ -90,6 +103,18 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
|
|||||||
return iterator(__tmp);
|
return iterator(__tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
template<typename _Tp, typename _Alloc>
|
||||||
|
typename list<_Tp, _Alloc>::iterator
|
||||||
|
list<_Tp, _Alloc>::
|
||||||
|
insert(iterator __position, value_type&& __x)
|
||||||
|
{
|
||||||
|
_Node* __tmp = _M_create_node(std::move(__x));
|
||||||
|
__tmp->hook(__position._M_node);
|
||||||
|
return iterator(__tmp);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
template<typename _Tp, typename _Alloc>
|
template<typename _Tp, typename _Alloc>
|
||||||
typename list<_Tp, _Alloc>::iterator
|
typename list<_Tp, _Alloc>::iterator
|
||||||
list<_Tp, _Alloc>::
|
list<_Tp, _Alloc>::
|
||||||
@ -220,7 +245,11 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
|
|||||||
template<typename _Tp, typename _Alloc>
|
template<typename _Tp, typename _Alloc>
|
||||||
void
|
void
|
||||||
list<_Tp, _Alloc>::
|
list<_Tp, _Alloc>::
|
||||||
|
#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
merge(list&& __x)
|
||||||
|
#else
|
||||||
merge(list& __x)
|
merge(list& __x)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
||||||
// 300. list::merge() specification incomplete
|
// 300. list::merge() specification incomplete
|
||||||
@ -250,7 +279,11 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
|
|||||||
template <typename _StrictWeakOrdering>
|
template <typename _StrictWeakOrdering>
|
||||||
void
|
void
|
||||||
list<_Tp, _Alloc>::
|
list<_Tp, _Alloc>::
|
||||||
|
#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
merge(list&& __x, _StrictWeakOrdering __comp)
|
||||||
|
#else
|
||||||
merge(list& __x, _StrictWeakOrdering __comp)
|
merge(list& __x, _StrictWeakOrdering __comp)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
||||||
// 300. list::merge() specification incomplete
|
// 300. list::merge() specification incomplete
|
||||||
|
@ -463,6 +463,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
|
|||||||
* Allocates space for a new node and constructs a copy of @a x in it.
|
* Allocates space for a new node and constructs a copy of @a x in it.
|
||||||
* @endif
|
* @endif
|
||||||
*/
|
*/
|
||||||
|
#ifndef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
_Node*
|
_Node*
|
||||||
_M_create_node(const value_type& __x)
|
_M_create_node(const value_type& __x)
|
||||||
{
|
{
|
||||||
@ -478,6 +479,25 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
|
|||||||
}
|
}
|
||||||
return __p;
|
return __p;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
template<typename... _Args>
|
||||||
|
_Node*
|
||||||
|
_M_create_node(_Args&&... __args)
|
||||||
|
{
|
||||||
|
_Node* __p = this->_M_get_node();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_M_get_Tp_allocator().construct(&__p->_M_data,
|
||||||
|
std::forward<_Args>(__args)...);
|
||||||
|
}
|
||||||
|
catch(...)
|
||||||
|
{
|
||||||
|
_M_put_node(__p);
|
||||||
|
__throw_exception_again;
|
||||||
|
}
|
||||||
|
return __p;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// [23.2.2.1] construct/copy/destroy
|
// [23.2.2.1] construct/copy/destroy
|
||||||
@ -823,9 +843,16 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
|
|||||||
* done in constant time, and does not invalidate iterators and
|
* done in constant time, and does not invalidate iterators and
|
||||||
* references.
|
* references.
|
||||||
*/
|
*/
|
||||||
|
#ifndef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
void
|
void
|
||||||
push_front(const value_type& __x)
|
push_front(const value_type& __x)
|
||||||
{ this->_M_insert(begin(), __x); }
|
{ this->_M_insert(begin(), __x); }
|
||||||
|
#else
|
||||||
|
template<typename... _Args>
|
||||||
|
void
|
||||||
|
push_front(_Args&&... __args)
|
||||||
|
{ this->_M_insert(begin(), std::forward<_Args>(__args)...); }
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Removes first element.
|
* @brief Removes first element.
|
||||||
@ -853,9 +880,16 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
|
|||||||
* in constant time, and does not invalidate iterators and
|
* in constant time, and does not invalidate iterators and
|
||||||
* references.
|
* references.
|
||||||
*/
|
*/
|
||||||
|
#ifndef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
void
|
void
|
||||||
push_back(const value_type& __x)
|
push_back(const value_type& __x)
|
||||||
{ this->_M_insert(end(), __x); }
|
{ this->_M_insert(end(), __x); }
|
||||||
|
#else
|
||||||
|
template<typename... _Args>
|
||||||
|
void
|
||||||
|
push_back(_Args&&... __args)
|
||||||
|
{ this->_M_insert(end(), std::forward<_Args>(__args)...); }
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Removes last element.
|
* @brief Removes last element.
|
||||||
@ -872,6 +906,24 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
|
|||||||
pop_back()
|
pop_back()
|
||||||
{ this->_M_erase(iterator(this->_M_impl._M_node._M_prev)); }
|
{ this->_M_erase(iterator(this->_M_impl._M_node._M_prev)); }
|
||||||
|
|
||||||
|
#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
/**
|
||||||
|
* @brief Constructs object in %list before specified iterator.
|
||||||
|
* @param position A const_iterator into the %list.
|
||||||
|
* @param args Arguments.
|
||||||
|
* @return An iterator that points to the inserted data.
|
||||||
|
*
|
||||||
|
* This function will insert an object of type T constructed
|
||||||
|
* with T(std::forward<Args>(args)...) before the specified
|
||||||
|
* location. Due to the nature of a %list this operation can
|
||||||
|
* be done in constant time, and does not invalidate iterators
|
||||||
|
* and references.
|
||||||
|
*/
|
||||||
|
template<typename... _Args>
|
||||||
|
iterator
|
||||||
|
emplace(iterator __position, _Args&&... __args);
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Inserts given value into %list before specified iterator.
|
* @brief Inserts given value into %list before specified iterator.
|
||||||
* @param position An iterator into the %list.
|
* @param position An iterator into the %list.
|
||||||
@ -886,6 +938,22 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
|
|||||||
iterator
|
iterator
|
||||||
insert(iterator __position, const value_type& __x);
|
insert(iterator __position, const value_type& __x);
|
||||||
|
|
||||||
|
#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
/**
|
||||||
|
* @brief Inserts given rvalue into %list before specified iterator.
|
||||||
|
* @param position An iterator into the %list.
|
||||||
|
* @param x Data to be inserted.
|
||||||
|
* @return An iterator that points to the inserted data.
|
||||||
|
*
|
||||||
|
* This function will insert a copy of the given rvalue before
|
||||||
|
* the specified location. Due to the nature of a %list this
|
||||||
|
* operation can be done in constant time, and does not
|
||||||
|
* invalidate iterators and references.
|
||||||
|
*/
|
||||||
|
iterator
|
||||||
|
insert(iterator __position, value_type&& __x);
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Inserts a number of copies of given data into the %list.
|
* @brief Inserts a number of copies of given data into the %list.
|
||||||
* @param position An iterator into the %list.
|
* @param position An iterator into the %list.
|
||||||
@ -1021,7 +1089,11 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
|
|||||||
* Requires this != @a x.
|
* Requires this != @a x.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
|
#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
splice(iterator __position, list&& __x)
|
||||||
|
#else
|
||||||
splice(iterator __position, list& __x)
|
splice(iterator __position, list& __x)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
if (!__x.empty())
|
if (!__x.empty())
|
||||||
{
|
{
|
||||||
@ -1041,7 +1113,11 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
|
|||||||
* inserts it into the current list before @a position.
|
* inserts it into the current list before @a position.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
|
#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
splice(iterator __position, list&& __x, iterator __i)
|
||||||
|
#else
|
||||||
splice(iterator __position, list& __x, iterator __i)
|
splice(iterator __position, list& __x, iterator __i)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
iterator __j = __i;
|
iterator __j = __i;
|
||||||
++__j;
|
++__j;
|
||||||
@ -1067,7 +1143,13 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
|
|||||||
* Undefined if @a position is in [first,last).
|
* Undefined if @a position is in [first,last).
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
splice(iterator __position, list& __x, iterator __first, iterator __last)
|
#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
splice(iterator __position, list&& __x, iterator __first,
|
||||||
|
iterator __last)
|
||||||
|
#else
|
||||||
|
splice(iterator __position, list& __x, iterator __first,
|
||||||
|
iterator __last)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
if (__first != __last)
|
if (__first != __last)
|
||||||
{
|
{
|
||||||
@ -1146,7 +1228,11 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
|
|||||||
* this list precede elements in @a x that are equal.
|
* this list precede elements in @a x that are equal.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
|
#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
merge(list&& __x);
|
||||||
|
#else
|
||||||
merge(list& __x);
|
merge(list& __x);
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Merge sorted lists according to comparison function.
|
* @brief Merge sorted lists according to comparison function.
|
||||||
@ -1162,7 +1248,11 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
|
|||||||
*/
|
*/
|
||||||
template<typename _StrictWeakOrdering>
|
template<typename _StrictWeakOrdering>
|
||||||
void
|
void
|
||||||
|
#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
merge(list&&, _StrictWeakOrdering);
|
||||||
|
#else
|
||||||
merge(list&, _StrictWeakOrdering);
|
merge(list&, _StrictWeakOrdering);
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Reverse the elements in list.
|
* @brief Reverse the elements in list.
|
||||||
@ -1253,12 +1343,22 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
|
|||||||
{ __position._M_node->transfer(__first._M_node, __last._M_node); }
|
{ __position._M_node->transfer(__first._M_node, __last._M_node); }
|
||||||
|
|
||||||
// Inserts new element at position given and with value given.
|
// Inserts new element at position given and with value given.
|
||||||
|
#ifndef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
void
|
void
|
||||||
_M_insert(iterator __position, const value_type& __x)
|
_M_insert(iterator __position, const value_type& __x)
|
||||||
{
|
{
|
||||||
_Node* __tmp = _M_create_node(__x);
|
_Node* __tmp = _M_create_node(__x);
|
||||||
__tmp->hook(__position._M_node);
|
__tmp->hook(__position._M_node);
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
template<typename... _Args>
|
||||||
|
void
|
||||||
|
_M_insert(iterator __position, _Args&&... __args)
|
||||||
|
{
|
||||||
|
_Node* __tmp = _M_create_node(std::forward<_Args>(__args)...);
|
||||||
|
__tmp->hook(__position._M_node);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// Erases element at position given.
|
// Erases element at position given.
|
||||||
void
|
void
|
||||||
|
@ -301,6 +301,17 @@ namespace __debug
|
|||||||
_Base::pop_back();
|
_Base::pop_back();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
template<typename... _Args>
|
||||||
|
iterator
|
||||||
|
emplace(iterator __position, _Args&&... __args)
|
||||||
|
{
|
||||||
|
__glibcxx_check_insert(__position);
|
||||||
|
return iterator(_Base::emplace(__position.base(),
|
||||||
|
std::forward<_Args>(__args)...), this);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
iterator
|
iterator
|
||||||
insert(iterator __position, const _Tp& __x)
|
insert(iterator __position, const _Tp& __x)
|
||||||
{
|
{
|
||||||
@ -308,6 +319,16 @@ namespace __debug
|
|||||||
return iterator(_Base::insert(__position.base(), __x), this);
|
return iterator(_Base::insert(__position.base(), __x), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
iterator
|
||||||
|
insert(iterator __position, _Tp&& __x)
|
||||||
|
{
|
||||||
|
__glibcxx_check_insert(__position);
|
||||||
|
return iterator(_Base::insert(__position.base(),
|
||||||
|
std::move(__x)), this);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
insert(iterator __position, size_type __n, const _Tp& __x)
|
insert(iterator __position, size_type __n, const _Tp& __x)
|
||||||
{
|
{
|
||||||
@ -367,16 +388,24 @@ namespace __debug
|
|||||||
|
|
||||||
// 23.2.2.4 list operations:
|
// 23.2.2.4 list operations:
|
||||||
void
|
void
|
||||||
|
#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
splice(iterator __position, list&& __x)
|
||||||
|
#else
|
||||||
splice(iterator __position, list& __x)
|
splice(iterator __position, list& __x)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
_GLIBCXX_DEBUG_VERIFY(&__x != this,
|
_GLIBCXX_DEBUG_VERIFY(&__x != this,
|
||||||
_M_message(__gnu_debug::__msg_self_splice)
|
_M_message(__gnu_debug::__msg_self_splice)
|
||||||
._M_sequence(*this, "this"));
|
._M_sequence(*this, "this"));
|
||||||
this->splice(__position, __x, __x.begin(), __x.end());
|
this->splice(__position, _GLIBCXX_MOVE(__x), __x.begin(), __x.end());
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
splice(iterator __position, list&& __x, iterator __i)
|
||||||
|
#else
|
||||||
splice(iterator __position, list& __x, iterator __i)
|
splice(iterator __position, list& __x, iterator __i)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
__glibcxx_check_insert(__position);
|
__glibcxx_check_insert(__position);
|
||||||
|
|
||||||
@ -393,11 +422,18 @@ namespace __debug
|
|||||||
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
||||||
// 250. splicing invalidates iterators
|
// 250. splicing invalidates iterators
|
||||||
this->_M_transfer_iter(__i);
|
this->_M_transfer_iter(__i);
|
||||||
_Base::splice(__position.base(), __x._M_base(), __i.base());
|
_Base::splice(__position.base(), _GLIBCXX_MOVE(__x._M_base()),
|
||||||
|
__i.base());
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
splice(iterator __position, list& __x, iterator __first, iterator __last)
|
#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
splice(iterator __position, list&& __x, iterator __first,
|
||||||
|
iterator __last)
|
||||||
|
#else
|
||||||
|
splice(iterator __position, list& __x, iterator __first,
|
||||||
|
iterator __last)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
__glibcxx_check_insert(__position);
|
__glibcxx_check_insert(__position);
|
||||||
__glibcxx_check_valid_range(__first, __last);
|
__glibcxx_check_valid_range(__first, __last);
|
||||||
@ -422,8 +458,8 @@ namespace __debug
|
|||||||
this->_M_transfer_iter(__victim);
|
this->_M_transfer_iter(__victim);
|
||||||
}
|
}
|
||||||
|
|
||||||
_Base::splice(__position.base(), __x._M_base(), __first.base(),
|
_Base::splice(__position.base(), _GLIBCXX_MOVE(__x._M_base()),
|
||||||
__last.base());
|
__first.base(), __last.base());
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -489,7 +525,11 @@ namespace __debug
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
merge(list&& __x)
|
||||||
|
#else
|
||||||
merge(list& __x)
|
merge(list& __x)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
__glibcxx_check_sorted(_Base::begin(), _Base::end());
|
__glibcxx_check_sorted(_Base::begin(), _Base::end());
|
||||||
__glibcxx_check_sorted(__x.begin().base(), __x.end().base());
|
__glibcxx_check_sorted(__x.begin().base(), __x.end().base());
|
||||||
@ -498,12 +538,16 @@ namespace __debug
|
|||||||
iterator __victim = __tmp++;
|
iterator __victim = __tmp++;
|
||||||
__victim._M_attach(&__x);
|
__victim._M_attach(&__x);
|
||||||
}
|
}
|
||||||
_Base::merge(__x._M_base());
|
_Base::merge(_GLIBCXX_MOVE(__x._M_base()));
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class _Compare>
|
template<class _Compare>
|
||||||
void
|
void
|
||||||
|
#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
merge(list&& __x, _Compare __comp)
|
||||||
|
#else
|
||||||
merge(list& __x, _Compare __comp)
|
merge(list& __x, _Compare __comp)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
__glibcxx_check_sorted_pred(_Base::begin(), _Base::end(), __comp);
|
__glibcxx_check_sorted_pred(_Base::begin(), _Base::end(), __comp);
|
||||||
__glibcxx_check_sorted_pred(__x.begin().base(), __x.end().base(),
|
__glibcxx_check_sorted_pred(__x.begin().base(), __x.end().base(),
|
||||||
@ -513,7 +557,7 @@ namespace __debug
|
|||||||
iterator __victim = __tmp++;
|
iterator __victim = __tmp++;
|
||||||
__victim._M_attach(&__x);
|
__victim._M_attach(&__x);
|
||||||
}
|
}
|
||||||
_Base::merge(__x._M_base(), __comp);
|
_Base::merge(_GLIBCXX_MOVE(__x._M_base()), __comp);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
// USA.
|
// USA.
|
||||||
|
|
||||||
// { dg-do compile }
|
// { dg-do compile }
|
||||||
// { dg-error "no matching" "" { target *-*-* } 1236 }
|
// { dg-error "no matching" "" { target *-*-* } 1326 }
|
||||||
// { dg-excess-errors "" }
|
// { dg-excess-errors "" }
|
||||||
|
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
// USA.
|
// USA.
|
||||||
|
|
||||||
// { dg-do compile }
|
// { dg-do compile }
|
||||||
// { dg-error "no matching" "" { target *-*-* } 1205 }
|
// { dg-error "no matching" "" { target *-*-* } 1295 }
|
||||||
// { dg-excess-errors "" }
|
// { dg-excess-errors "" }
|
||||||
|
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
// USA.
|
// USA.
|
||||||
|
|
||||||
// { dg-do compile }
|
// { dg-do compile }
|
||||||
// { dg-error "no matching" "" { target *-*-* } 1205 }
|
// { dg-error "no matching" "" { target *-*-* } 1295 }
|
||||||
// { dg-excess-errors "" }
|
// { dg-excess-errors "" }
|
||||||
|
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
// USA.
|
// USA.
|
||||||
|
|
||||||
// { dg-do compile }
|
// { dg-do compile }
|
||||||
// { dg-error "no matching" "" { target *-*-* } 1205 }
|
// { dg-error "no matching" "" { target *-*-* } 1295 }
|
||||||
// { dg-excess-errors "" }
|
// { dg-excess-errors "" }
|
||||||
|
|
||||||
#include <list>
|
#include <list>
|
||||||
|
Loading…
Reference in New Issue
Block a user