Commit e75ea710 by Paolo Carlini Committed by Paolo Carlini

stl_algobase.h (__copy_normal::copy_n): Uglify to __copy_n.

2005-12-18  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/stl_algobase.h (__copy_normal::copy_n): Uglify
	to __copy_n.
	(__copy_backward::copy_b): Likewise to __copy_b.
	(__copy_backward_normal::copy_b_n): Likewise to __copy_b_n.
	(copy, __copy_backward_aux, copy_backward): Adjust.

2005-12-18  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/stl_algo.h (partial_sort_copy): Add
	_BinaryPredicateConcept<_Compare, _InputValueType, _OutputValueType>
	(merge, set_union, set_symmetric_difference): Add
	_OutputIteratorConcept<_OutputIterator, _ValueType2>.
	(binary_search): Remove redundant _BinaryPredicateConcept<_Compare,
	_ValueType, _Tp>, taken care by lower_bound.
	* include/bits/stl_algo.h: Cosmetic changes.

2005-12-18  Paolo Carlini  <pcarlini@suse.de>
	    Howard Hinnant  <hhinnant@apple.com>

	* include/bits/stl_algo.h (merge, includes, set_union,
	set_intersection, set_difference, set_symmetric_difference):
	Fix concept checks.

2005-12-18  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/stl_algo.h (partial_sort_copy, lower_bound,
	upper_bound, equal_range, binary_search): Fix concept checks.

Co-Authored-By: Howard Hinnant <hhinnant@apple.com>

From-SVN: r108758
parent 6a60530d
2005-12-18 Paolo Carlini <pcarlini@suse.de>
* include/bits/stl_algobase.h (__copy_normal::copy_n): Uglify
to __copy_n.
(__copy_backward::copy_b): Likewise to __copy_b.
(__copy_backward_normal::copy_b_n): Likewise to __copy_b_n.
(copy, __copy_backward_aux, copy_backward): Adjust.
2005-12-18 Paolo Carlini <pcarlini@suse.de>
* include/bits/stl_algo.h (partial_sort_copy): Add
_BinaryPredicateConcept<_Compare, _InputValueType, _OutputValueType>
(merge, set_union, set_symmetric_difference): Add
_OutputIteratorConcept<_OutputIterator, _ValueType2>.
(binary_search): Remove redundant _BinaryPredicateConcept<_Compare,
_ValueType, _Tp>, taken care by lower_bound.
* include/bits/stl_algo.h: Cosmetic changes.
2005-12-18 Paolo Carlini <pcarlini@suse.de>
Howard Hinnant <hhinnant@apple.com>
* include/bits/stl_algo.h (merge, includes, set_union,
set_intersection, set_difference, set_symmetric_difference):
Fix concept checks.
2005-12-18 Paolo Carlini <pcarlini@suse.de>
* include/bits/stl_algo.h (partial_sort_copy, lower_bound,
upper_bound, equal_range, binary_search): Fix concept checks.
2005-12-18 Benjamin Kosnik <bkoz@redhat.com> 2005-12-18 Benjamin Kosnik <bkoz@redhat.com>
* config/abi/post: New. * config/abi/post: New.
......
...@@ -2512,8 +2512,9 @@ namespace std ...@@ -2512,8 +2512,9 @@ namespace std
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
__glibcxx_function_requires(_ConvertibleConcept<_InputValueType, __glibcxx_function_requires(_ConvertibleConcept<_InputValueType,
_OutputValueType>) _OutputValueType>)
__glibcxx_function_requires(_LessThanOpConcept<_InputValueType,
_OutputValueType>)
__glibcxx_function_requires(_LessThanComparableConcept<_OutputValueType>) __glibcxx_function_requires(_LessThanComparableConcept<_OutputValueType>)
__glibcxx_function_requires(_LessThanComparableConcept<_InputValueType>)
__glibcxx_requires_valid_range(__first, __last); __glibcxx_requires_valid_range(__first, __last);
__glibcxx_requires_valid_range(__result_first, __result_last); __glibcxx_requires_valid_range(__result_first, __result_last);
...@@ -2580,6 +2581,8 @@ namespace std ...@@ -2580,6 +2581,8 @@ namespace std
__glibcxx_function_requires(_ConvertibleConcept<_InputValueType, __glibcxx_function_requires(_ConvertibleConcept<_InputValueType,
_OutputValueType>) _OutputValueType>)
__glibcxx_function_requires(_BinaryPredicateConcept<_Compare, __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
_InputValueType, _OutputValueType>)
__glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
_OutputValueType, _OutputValueType>) _OutputValueType, _OutputValueType>)
__glibcxx_requires_valid_range(__first, __last); __glibcxx_requires_valid_range(__first, __last);
__glibcxx_requires_valid_range(__result_first, __result_last); __glibcxx_requires_valid_range(__result_first, __result_last);
...@@ -2772,13 +2775,8 @@ namespace std ...@@ -2772,13 +2775,8 @@ namespace std
_DistanceType; _DistanceType;
// concept requirements // concept requirements
// Note that these are slightly stricter than those of the 4-argument
// version, defined next. The difference is in the strictness of the
// comparison operations... so for looser checking, define your own
// comparison function, as was intended.
__glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
__glibcxx_function_requires(_SameTypeConcept<_Tp, _ValueType>) __glibcxx_function_requires(_LessThanOpConcept<_ValueType, _Tp>)
__glibcxx_function_requires(_LessThanComparableConcept<_Tp>)
__glibcxx_requires_partitioned(__first, __last, __val); __glibcxx_requires_partitioned(__first, __last, __val);
_DistanceType __len = std::distance(__first, __last); _DistanceType __len = std::distance(__first, __last);
...@@ -2874,10 +2872,8 @@ namespace std ...@@ -2874,10 +2872,8 @@ namespace std
_DistanceType; _DistanceType;
// concept requirements // concept requirements
// See comments on lower_bound.
__glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
__glibcxx_function_requires(_SameTypeConcept<_Tp, _ValueType>) __glibcxx_function_requires(_LessThanOpConcept<_Tp, _ValueType>)
__glibcxx_function_requires(_LessThanComparableConcept<_Tp>)
__glibcxx_requires_partitioned(__first, __last, __val); __glibcxx_requires_partitioned(__first, __last, __val);
_DistanceType __len = std::distance(__first, __last); _DistanceType __len = std::distance(__first, __last);
...@@ -3120,16 +3116,19 @@ namespace std ...@@ -3120,16 +3116,19 @@ namespace std
_InputIterator2 __first2, _InputIterator2 __last2, _InputIterator2 __first2, _InputIterator2 __last2,
_OutputIterator __result) _OutputIterator __result)
{ {
typedef typename iterator_traits<_InputIterator1>::value_type
_ValueType1;
typedef typename iterator_traits<_InputIterator2>::value_type
_ValueType2;
// concept requirements // concept requirements
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
__glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
typename iterator_traits<_InputIterator1>::value_type>) _ValueType1>)
__glibcxx_function_requires(_SameTypeConcept< __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
typename iterator_traits<_InputIterator1>::value_type, _ValueType2>)
typename iterator_traits<_InputIterator2>::value_type>) __glibcxx_function_requires(_LessThanOpConcept<_ValueType2, _ValueType1>)
__glibcxx_function_requires(_LessThanComparableConcept<
typename iterator_traits<_InputIterator1>::value_type>)
__glibcxx_requires_sorted(__first1, __last1); __glibcxx_requires_sorted(__first1, __last1);
__glibcxx_requires_sorted(__first2, __last2); __glibcxx_requires_sorted(__first2, __last2);
...@@ -3178,17 +3177,20 @@ namespace std ...@@ -3178,17 +3177,20 @@ namespace std
_InputIterator2 __first2, _InputIterator2 __last2, _InputIterator2 __first2, _InputIterator2 __last2,
_OutputIterator __result, _Compare __comp) _OutputIterator __result, _Compare __comp)
{ {
typedef typename iterator_traits<_InputIterator1>::value_type
_ValueType1;
typedef typename iterator_traits<_InputIterator2>::value_type
_ValueType2;
// concept requirements // concept requirements
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
__glibcxx_function_requires(_SameTypeConcept<
typename iterator_traits<_InputIterator1>::value_type,
typename iterator_traits<_InputIterator2>::value_type>)
__glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
typename iterator_traits<_InputIterator1>::value_type>) _ValueType1>)
__glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
_ValueType2>)
__glibcxx_function_requires(_BinaryPredicateConcept<_Compare, __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
typename iterator_traits<_InputIterator1>::value_type, _ValueType2, _ValueType1>)
typename iterator_traits<_InputIterator2>::value_type>)
__glibcxx_requires_sorted_pred(__first1, __last1, __comp); __glibcxx_requires_sorted_pred(__first1, __last1, __comp);
__glibcxx_requires_sorted_pred(__first2, __last2, __comp); __glibcxx_requires_sorted_pred(__first2, __last2, __comp);
...@@ -3951,10 +3953,9 @@ namespace std ...@@ -3951,10 +3953,9 @@ namespace std
_DistanceType; _DistanceType;
// concept requirements // concept requirements
// See comments on lower_bound.
__glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
__glibcxx_function_requires(_SameTypeConcept<_Tp, _ValueType>) __glibcxx_function_requires(_LessThanOpConcept<_ValueType, _Tp>)
__glibcxx_function_requires(_LessThanComparableConcept<_Tp>) __glibcxx_function_requires(_LessThanOpConcept<_Tp, _ValueType>)
__glibcxx_requires_partitioned(__first, __last, __val); __glibcxx_requires_partitioned(__first, __last, __val);
_DistanceType __len = std::distance(__first, __last); _DistanceType __len = std::distance(__first, __last);
...@@ -4065,12 +4066,12 @@ namespace std ...@@ -4065,12 +4066,12 @@ namespace std
binary_search(_ForwardIterator __first, _ForwardIterator __last, binary_search(_ForwardIterator __first, _ForwardIterator __last,
const _Tp& __val) const _Tp& __val)
{ {
typedef typename iterator_traits<_ForwardIterator>::value_type
_ValueType;
// concept requirements // concept requirements
// See comments on lower_bound.
__glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
__glibcxx_function_requires(_SameTypeConcept<_Tp, __glibcxx_function_requires(_LessThanOpConcept<_Tp, _ValueType>)
typename iterator_traits<_ForwardIterator>::value_type>)
__glibcxx_function_requires(_LessThanComparableConcept<_Tp>)
__glibcxx_requires_partitioned(__first, __last, __val); __glibcxx_requires_partitioned(__first, __last, __val);
_ForwardIterator __i = std::lower_bound(__first, __last, __val); _ForwardIterator __i = std::lower_bound(__first, __last, __val);
...@@ -4097,12 +4098,13 @@ namespace std ...@@ -4097,12 +4098,13 @@ namespace std
binary_search(_ForwardIterator __first, _ForwardIterator __last, binary_search(_ForwardIterator __first, _ForwardIterator __last,
const _Tp& __val, _Compare __comp) const _Tp& __val, _Compare __comp)
{ {
typedef typename iterator_traits<_ForwardIterator>::value_type
_ValueType;
// concept requirements // concept requirements
__glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
__glibcxx_function_requires(_BinaryPredicateConcept<_Compare, __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
typename iterator_traits<_ForwardIterator>::value_type, _Tp>) _Tp, _ValueType>)
__glibcxx_function_requires(_BinaryPredicateConcept<_Compare, _Tp,
typename iterator_traits<_ForwardIterator>::value_type>)
__glibcxx_requires_partitioned_pred(__first, __last, __val, __comp); __glibcxx_requires_partitioned_pred(__first, __last, __val, __comp);
_ForwardIterator __i = std::lower_bound(__first, __last, __val, __comp); _ForwardIterator __i = std::lower_bound(__first, __last, __val, __comp);
...@@ -4135,14 +4137,16 @@ namespace std ...@@ -4135,14 +4137,16 @@ namespace std
includes(_InputIterator1 __first1, _InputIterator1 __last1, includes(_InputIterator1 __first1, _InputIterator1 __last1,
_InputIterator2 __first2, _InputIterator2 __last2) _InputIterator2 __first2, _InputIterator2 __last2)
{ {
typedef typename iterator_traits<_InputIterator1>::value_type
_ValueType1;
typedef typename iterator_traits<_InputIterator2>::value_type
_ValueType2;
// concept requirements // concept requirements
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
__glibcxx_function_requires(_SameTypeConcept< __glibcxx_function_requires(_LessThanOpConcept<_ValueType1, _ValueType2>)
typename iterator_traits<_InputIterator1>::value_type, __glibcxx_function_requires(_LessThanOpConcept<_ValueType2, _ValueType1>)
typename iterator_traits<_InputIterator2>::value_type>)
__glibcxx_function_requires(_LessThanComparableConcept<
typename iterator_traits<_InputIterator1>::value_type>)
__glibcxx_requires_sorted(__first1, __last1); __glibcxx_requires_sorted(__first1, __last1);
__glibcxx_requires_sorted(__first2, __last2); __glibcxx_requires_sorted(__first2, __last2);
...@@ -4182,15 +4186,18 @@ namespace std ...@@ -4182,15 +4186,18 @@ namespace std
includes(_InputIterator1 __first1, _InputIterator1 __last1, includes(_InputIterator1 __first1, _InputIterator1 __last1,
_InputIterator2 __first2, _InputIterator2 __last2, _Compare __comp) _InputIterator2 __first2, _InputIterator2 __last2, _Compare __comp)
{ {
typedef typename iterator_traits<_InputIterator1>::value_type
_ValueType1;
typedef typename iterator_traits<_InputIterator2>::value_type
_ValueType2;
// concept requirements // concept requirements
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
__glibcxx_function_requires(_SameTypeConcept<
typename iterator_traits<_InputIterator1>::value_type,
typename iterator_traits<_InputIterator2>::value_type>)
__glibcxx_function_requires(_BinaryPredicateConcept<_Compare, __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
typename iterator_traits<_InputIterator1>::value_type, _ValueType1, _ValueType2>)
typename iterator_traits<_InputIterator2>::value_type>) __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
_ValueType2, _ValueType1>)
__glibcxx_requires_sorted_pred(__first1, __last1, __comp); __glibcxx_requires_sorted_pred(__first1, __last1, __comp);
__glibcxx_requires_sorted_pred(__first2, __last2, __comp); __glibcxx_requires_sorted_pred(__first2, __last2, __comp);
...@@ -4229,16 +4236,20 @@ namespace std ...@@ -4229,16 +4236,20 @@ namespace std
_InputIterator2 __first2, _InputIterator2 __last2, _InputIterator2 __first2, _InputIterator2 __last2,
_OutputIterator __result) _OutputIterator __result)
{ {
typedef typename iterator_traits<_InputIterator1>::value_type
_ValueType1;
typedef typename iterator_traits<_InputIterator2>::value_type
_ValueType2;
// concept requirements // concept requirements
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
__glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
typename iterator_traits<_InputIterator1>::value_type>) _ValueType1>)
__glibcxx_function_requires(_SameTypeConcept< __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
typename iterator_traits<_InputIterator1>::value_type, _ValueType2>)
typename iterator_traits<_InputIterator2>::value_type>) __glibcxx_function_requires(_LessThanOpConcept<_ValueType1, _ValueType2>)
__glibcxx_function_requires(_LessThanComparableConcept< __glibcxx_function_requires(_LessThanOpConcept<_ValueType2, _ValueType1>)
typename iterator_traits<_InputIterator1>::value_type>)
__glibcxx_requires_sorted(__first1, __last1); __glibcxx_requires_sorted(__first1, __last1);
__glibcxx_requires_sorted(__first2, __last2); __glibcxx_requires_sorted(__first2, __last2);
...@@ -4291,17 +4302,22 @@ namespace std ...@@ -4291,17 +4302,22 @@ namespace std
_InputIterator2 __first2, _InputIterator2 __last2, _InputIterator2 __first2, _InputIterator2 __last2,
_OutputIterator __result, _Compare __comp) _OutputIterator __result, _Compare __comp)
{ {
typedef typename iterator_traits<_InputIterator1>::value_type
_ValueType1;
typedef typename iterator_traits<_InputIterator2>::value_type
_ValueType2;
// concept requirements // concept requirements
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
__glibcxx_function_requires(_SameTypeConcept<
typename iterator_traits<_InputIterator1>::value_type,
typename iterator_traits<_InputIterator2>::value_type>)
__glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
typename iterator_traits<_InputIterator1>::value_type>) _ValueType1>)
__glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
_ValueType2>)
__glibcxx_function_requires(_BinaryPredicateConcept<_Compare, __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
typename iterator_traits<_InputIterator1>::value_type, _ValueType1, _ValueType2>)
typename iterator_traits<_InputIterator2>::value_type>) __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
_ValueType2, _ValueType1>)
__glibcxx_requires_sorted_pred(__first1, __last1, __comp); __glibcxx_requires_sorted_pred(__first1, __last1, __comp);
__glibcxx_requires_sorted_pred(__first2, __last2, __comp); __glibcxx_requires_sorted_pred(__first2, __last2, __comp);
...@@ -4352,16 +4368,18 @@ namespace std ...@@ -4352,16 +4368,18 @@ namespace std
_InputIterator2 __first2, _InputIterator2 __last2, _InputIterator2 __first2, _InputIterator2 __last2,
_OutputIterator __result) _OutputIterator __result)
{ {
typedef typename iterator_traits<_InputIterator1>::value_type
_ValueType1;
typedef typename iterator_traits<_InputIterator2>::value_type
_ValueType2;
// concept requirements // concept requirements
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
__glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
typename iterator_traits<_InputIterator1>::value_type>) _ValueType1>)
__glibcxx_function_requires(_SameTypeConcept< __glibcxx_function_requires(_LessThanOpConcept<_ValueType1, _ValueType2>)
typename iterator_traits<_InputIterator1>::value_type, __glibcxx_function_requires(_LessThanOpConcept<_ValueType2, _ValueType1>)
typename iterator_traits<_InputIterator2>::value_type>)
__glibcxx_function_requires(_LessThanComparableConcept<
typename iterator_traits<_InputIterator1>::value_type>)
__glibcxx_requires_sorted(__first1, __last1); __glibcxx_requires_sorted(__first1, __last1);
__glibcxx_requires_sorted(__first2, __last2); __glibcxx_requires_sorted(__first2, __last2);
...@@ -4406,17 +4424,20 @@ namespace std ...@@ -4406,17 +4424,20 @@ namespace std
_InputIterator2 __first2, _InputIterator2 __last2, _InputIterator2 __first2, _InputIterator2 __last2,
_OutputIterator __result, _Compare __comp) _OutputIterator __result, _Compare __comp)
{ {
typedef typename iterator_traits<_InputIterator1>::value_type
_ValueType1;
typedef typename iterator_traits<_InputIterator2>::value_type
_ValueType2;
// concept requirements // concept requirements
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
__glibcxx_function_requires(_SameTypeConcept<
typename iterator_traits<_InputIterator1>::value_type,
typename iterator_traits<_InputIterator2>::value_type>)
__glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
typename iterator_traits<_InputIterator1>::value_type>) _ValueType1>)
__glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
_ValueType1, _ValueType2>)
__glibcxx_function_requires(_BinaryPredicateConcept<_Compare, __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
typename iterator_traits<_InputIterator1>::value_type, _ValueType2, _ValueType1>)
typename iterator_traits<_InputIterator2>::value_type>)
__glibcxx_requires_sorted_pred(__first1, __last1, __comp); __glibcxx_requires_sorted_pred(__first1, __last1, __comp);
__glibcxx_requires_sorted_pred(__first2, __last2, __comp); __glibcxx_requires_sorted_pred(__first2, __last2, __comp);
...@@ -4460,16 +4481,18 @@ namespace std ...@@ -4460,16 +4481,18 @@ namespace std
_InputIterator2 __first2, _InputIterator2 __last2, _InputIterator2 __first2, _InputIterator2 __last2,
_OutputIterator __result) _OutputIterator __result)
{ {
typedef typename iterator_traits<_InputIterator1>::value_type
_ValueType1;
typedef typename iterator_traits<_InputIterator2>::value_type
_ValueType2;
// concept requirements // concept requirements
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
__glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
typename iterator_traits<_InputIterator1>::value_type>) _ValueType1>)
__glibcxx_function_requires(_SameTypeConcept< __glibcxx_function_requires(_LessThanOpConcept<_ValueType1, _ValueType2>)
typename iterator_traits<_InputIterator1>::value_type, __glibcxx_function_requires(_LessThanOpConcept<_ValueType2, _ValueType1>)
typename iterator_traits<_InputIterator2>::value_type>)
__glibcxx_function_requires(_LessThanComparableConcept<
typename iterator_traits<_InputIterator1>::value_type>)
__glibcxx_requires_sorted(__first1, __last1); __glibcxx_requires_sorted(__first1, __last1);
__glibcxx_requires_sorted(__first2, __last2); __glibcxx_requires_sorted(__first2, __last2);
...@@ -4518,17 +4541,20 @@ namespace std ...@@ -4518,17 +4541,20 @@ namespace std
_InputIterator2 __first2, _InputIterator2 __last2, _InputIterator2 __first2, _InputIterator2 __last2,
_OutputIterator __result, _Compare __comp) _OutputIterator __result, _Compare __comp)
{ {
typedef typename iterator_traits<_InputIterator1>::value_type
_ValueType1;
typedef typename iterator_traits<_InputIterator2>::value_type
_ValueType2;
// concept requirements // concept requirements
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
__glibcxx_function_requires(_SameTypeConcept<
typename iterator_traits<_InputIterator1>::value_type,
typename iterator_traits<_InputIterator2>::value_type>)
__glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
typename iterator_traits<_InputIterator1>::value_type>) _ValueType1>)
__glibcxx_function_requires(_BinaryPredicateConcept<_Compare, __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
typename iterator_traits<_InputIterator1>::value_type, _ValueType1, _ValueType2>)
typename iterator_traits<_InputIterator2>::value_type>) __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
_ValueType2, _ValueType1>)
__glibcxx_requires_sorted_pred(__first1, __last1, __comp); __glibcxx_requires_sorted_pred(__first1, __last1, __comp);
__glibcxx_requires_sorted_pred(__first2, __last2, __comp); __glibcxx_requires_sorted_pred(__first2, __last2, __comp);
...@@ -4572,16 +4598,20 @@ namespace std ...@@ -4572,16 +4598,20 @@ namespace std
_InputIterator2 __first2, _InputIterator2 __last2, _InputIterator2 __first2, _InputIterator2 __last2,
_OutputIterator __result) _OutputIterator __result)
{ {
typedef typename iterator_traits<_InputIterator1>::value_type
_ValueType1;
typedef typename iterator_traits<_InputIterator2>::value_type
_ValueType2;
// concept requirements // concept requirements
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
__glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
typename iterator_traits<_InputIterator1>::value_type>) _ValueType1>)
__glibcxx_function_requires(_SameTypeConcept< __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
typename iterator_traits<_InputIterator1>::value_type, _ValueType2>)
typename iterator_traits<_InputIterator2>::value_type>) __glibcxx_function_requires(_LessThanOpConcept<_ValueType1, _ValueType2>)
__glibcxx_function_requires(_LessThanComparableConcept< __glibcxx_function_requires(_LessThanOpConcept<_ValueType2, _ValueType1>)
typename iterator_traits<_InputIterator1>::value_type>)
__glibcxx_requires_sorted(__first1, __last1); __glibcxx_requires_sorted(__first1, __last1);
__glibcxx_requires_sorted(__first2, __last2); __glibcxx_requires_sorted(__first2, __last2);
...@@ -4634,17 +4664,22 @@ namespace std ...@@ -4634,17 +4664,22 @@ namespace std
_OutputIterator __result, _OutputIterator __result,
_Compare __comp) _Compare __comp)
{ {
typedef typename iterator_traits<_InputIterator1>::value_type
_ValueType1;
typedef typename iterator_traits<_InputIterator2>::value_type
_ValueType2;
// concept requirements // concept requirements
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
__glibcxx_function_requires(_SameTypeConcept<
typename iterator_traits<_InputIterator1>::value_type,
typename iterator_traits<_InputIterator2>::value_type>)
__glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
typename iterator_traits<_InputIterator1>::value_type>) _ValueType1>)
__glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
_ValueType2>)
__glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
_ValueType1, _ValueType2>)
__glibcxx_function_requires(_BinaryPredicateConcept<_Compare, __glibcxx_function_requires(_BinaryPredicateConcept<_Compare,
typename iterator_traits<_InputIterator1>::value_type, _ValueType2, _ValueType1>)
typename iterator_traits<_InputIterator2>::value_type>)
__glibcxx_requires_sorted_pred(__first1, __last1, __comp); __glibcxx_requires_sorted_pred(__first1, __last1, __comp);
__glibcxx_requires_sorted_pred(__first2, __last2, __comp); __glibcxx_requires_sorted_pred(__first2, __last2, __comp);
......
...@@ -322,7 +322,7 @@ namespace std ...@@ -322,7 +322,7 @@ namespace std
{ {
template<typename _II, typename _OI> template<typename _II, typename _OI>
static _OI static _OI
copy_n(_II __first, _II __last, _OI __result) __copy_n(_II __first, _II __last, _OI __result)
{ return std::__copy_aux(__first, __last, __result); } { return std::__copy_aux(__first, __last, __result); }
}; };
...@@ -331,7 +331,7 @@ namespace std ...@@ -331,7 +331,7 @@ namespace std
{ {
template<typename _II, typename _OI> template<typename _II, typename _OI>
static _OI static _OI
copy_n(_II __first, _II __last, _OI __result) __copy_n(_II __first, _II __last, _OI __result)
{ return std::__copy_aux(__first.base(), __last.base(), __result); } { return std::__copy_aux(__first.base(), __last.base(), __result); }
}; };
...@@ -340,7 +340,7 @@ namespace std ...@@ -340,7 +340,7 @@ namespace std
{ {
template<typename _II, typename _OI> template<typename _II, typename _OI>
static _OI static _OI
copy_n(_II __first, _II __last, _OI __result) __copy_n(_II __first, _II __last, _OI __result)
{ return _OI(std::__copy_aux(__first, __last, __result.base())); } { return _OI(std::__copy_aux(__first, __last, __result.base())); }
}; };
...@@ -349,7 +349,7 @@ namespace std ...@@ -349,7 +349,7 @@ namespace std
{ {
template<typename _II, typename _OI> template<typename _II, typename _OI>
static _OI static _OI
copy_n(_II __first, _II __last, _OI __result) __copy_n(_II __first, _II __last, _OI __result)
{ return _OI(std::__copy_aux(__first.base(), __last.base(), { return _OI(std::__copy_aux(__first.base(), __last.base(),
__result.base())); } __result.base())); }
}; };
...@@ -383,8 +383,8 @@ namespace std ...@@ -383,8 +383,8 @@ namespace std
const bool __in = __is_normal_iterator<_InputIterator>::__value; const bool __in = __is_normal_iterator<_InputIterator>::__value;
const bool __out = __is_normal_iterator<_OutputIterator>::__value; const bool __out = __is_normal_iterator<_OutputIterator>::__value;
return std::__copy_normal<__in, __out>::copy_n(__first, __last, return std::__copy_normal<__in, __out>::__copy_n(__first, __last,
__result); __result);
} }
template<bool, typename> template<bool, typename>
...@@ -392,7 +392,7 @@ namespace std ...@@ -392,7 +392,7 @@ namespace std
{ {
template<typename _BI1, typename _BI2> template<typename _BI1, typename _BI2>
static _BI2 static _BI2
copy_b(_BI1 __first, _BI1 __last, _BI2 __result) __copy_b(_BI1 __first, _BI1 __last, _BI2 __result)
{ {
while (__first != __last) while (__first != __last)
*--__result = *--__last; *--__result = *--__last;
...@@ -405,7 +405,7 @@ namespace std ...@@ -405,7 +405,7 @@ namespace std
{ {
template<typename _BI1, typename _BI2> template<typename _BI1, typename _BI2>
static _BI2 static _BI2
copy_b(_BI1 __first, _BI1 __last, _BI2 __result) __copy_b(_BI1 __first, _BI1 __last, _BI2 __result)
{ {
typename iterator_traits<_BI1>::difference_type __n; typename iterator_traits<_BI1>::difference_type __n;
for (__n = __last - __first; __n > 0; --__n) for (__n = __last - __first; __n > 0; --__n)
...@@ -419,7 +419,7 @@ namespace std ...@@ -419,7 +419,7 @@ namespace std
{ {
template<typename _Tp> template<typename _Tp>
static _Tp* static _Tp*
copy_b(const _Tp* __first, const _Tp* __last, _Tp* __result) __copy_b(const _Tp* __first, const _Tp* __last, _Tp* __result)
{ {
const ptrdiff_t _Num = __last - __first; const ptrdiff_t _Num = __last - __first;
std::memmove(__result - _Num, __first, sizeof(_Tp) * _Num); std::memmove(__result - _Num, __first, sizeof(_Tp) * _Num);
...@@ -439,8 +439,9 @@ namespace std ...@@ -439,8 +439,9 @@ namespace std
&& __is_pointer<_BI2>::__value && __is_pointer<_BI2>::__value
&& __are_same<_ValueType1, _ValueType2>::__value); && __are_same<_ValueType1, _ValueType2>::__value);
return std::__copy_backward<__simple, _Category>::copy_b(__first, __last, return std::__copy_backward<__simple, _Category>::__copy_b(__first,
__result); __last,
__result);
} }
template<bool, bool> template<bool, bool>
...@@ -448,7 +449,7 @@ namespace std ...@@ -448,7 +449,7 @@ namespace std
{ {
template<typename _BI1, typename _BI2> template<typename _BI1, typename _BI2>
static _BI2 static _BI2
copy_b_n(_BI1 __first, _BI1 __last, _BI2 __result) __copy_b_n(_BI1 __first, _BI1 __last, _BI2 __result)
{ return std::__copy_backward_aux(__first, __last, __result); } { return std::__copy_backward_aux(__first, __last, __result); }
}; };
...@@ -457,7 +458,7 @@ namespace std ...@@ -457,7 +458,7 @@ namespace std
{ {
template<typename _BI1, typename _BI2> template<typename _BI1, typename _BI2>
static _BI2 static _BI2
copy_b_n(_BI1 __first, _BI1 __last, _BI2 __result) __copy_b_n(_BI1 __first, _BI1 __last, _BI2 __result)
{ return std::__copy_backward_aux(__first.base(), __last.base(), { return std::__copy_backward_aux(__first.base(), __last.base(),
__result); } __result); }
}; };
...@@ -467,7 +468,7 @@ namespace std ...@@ -467,7 +468,7 @@ namespace std
{ {
template<typename _BI1, typename _BI2> template<typename _BI1, typename _BI2>
static _BI2 static _BI2
copy_b_n(_BI1 __first, _BI1 __last, _BI2 __result) __copy_b_n(_BI1 __first, _BI1 __last, _BI2 __result)
{ return _BI2(std::__copy_backward_aux(__first, __last, { return _BI2(std::__copy_backward_aux(__first, __last,
__result.base())); } __result.base())); }
}; };
...@@ -477,7 +478,7 @@ namespace std ...@@ -477,7 +478,7 @@ namespace std
{ {
template<typename _BI1, typename _BI2> template<typename _BI1, typename _BI2>
static _BI2 static _BI2
copy_b_n(_BI1 __first, _BI1 __last, _BI2 __result) __copy_b_n(_BI1 __first, _BI1 __last, _BI2 __result)
{ return _BI2(std::__copy_backward_aux(__first.base(), __last.base(), { return _BI2(std::__copy_backward_aux(__first.base(), __last.base(),
__result.base())); } __result.base())); }
}; };
...@@ -513,8 +514,9 @@ namespace std ...@@ -513,8 +514,9 @@ namespace std
const bool __bi1 = __is_normal_iterator<_BI1>::__value; const bool __bi1 = __is_normal_iterator<_BI1>::__value;
const bool __bi2 = __is_normal_iterator<_BI2>::__value; const bool __bi2 = __is_normal_iterator<_BI2>::__value;
return std::__copy_backward_normal<__bi1, __bi2>::copy_b_n(__first, __last, return std::__copy_backward_normal<__bi1, __bi2>::__copy_b_n(__first,
__result); __last,
__result);
} }
template<bool> template<bool>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment