Revert r178075, "Tighten up the iterator requirements ...", it breaks LLVM
bootstrap with libc++. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@178116 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
32d40f5f44
commit
34d36f39b0
@ -526,29 +526,17 @@ public:
|
|||||||
template <class _InputIterator>
|
template <class _InputIterator>
|
||||||
vector(_InputIterator __first, _InputIterator __last,
|
vector(_InputIterator __first, _InputIterator __last,
|
||||||
typename enable_if<__is_input_iterator <_InputIterator>::value &&
|
typename enable_if<__is_input_iterator <_InputIterator>::value &&
|
||||||
!__is_forward_iterator<_InputIterator>::value &&
|
!__is_forward_iterator<_InputIterator>::value>::type* = 0);
|
||||||
is_constructible<
|
|
||||||
value_type,
|
|
||||||
typename iterator_traits<_InputIterator>::reference>::value>::type* = 0);
|
|
||||||
template <class _InputIterator>
|
template <class _InputIterator>
|
||||||
vector(_InputIterator __first, _InputIterator __last, const allocator_type& __a,
|
vector(_InputIterator __first, _InputIterator __last, const allocator_type& __a,
|
||||||
typename enable_if<__is_input_iterator <_InputIterator>::value &&
|
typename enable_if<__is_input_iterator <_InputIterator>::value &&
|
||||||
!__is_forward_iterator<_InputIterator>::value &&
|
!__is_forward_iterator<_InputIterator>::value>::type* = 0);
|
||||||
is_constructible<
|
|
||||||
value_type,
|
|
||||||
typename iterator_traits<_InputIterator>::reference>::value>::type* = 0);
|
|
||||||
template <class _ForwardIterator>
|
template <class _ForwardIterator>
|
||||||
vector(_ForwardIterator __first, _ForwardIterator __last,
|
vector(_ForwardIterator __first, _ForwardIterator __last,
|
||||||
typename enable_if<__is_forward_iterator<_ForwardIterator>::value &&
|
typename enable_if<__is_forward_iterator<_ForwardIterator>::value>::type* = 0);
|
||||||
is_constructible<
|
|
||||||
value_type,
|
|
||||||
typename iterator_traits<_ForwardIterator>::reference>::value>::type* = 0);
|
|
||||||
template <class _ForwardIterator>
|
template <class _ForwardIterator>
|
||||||
vector(_ForwardIterator __first, _ForwardIterator __last, const allocator_type& __a,
|
vector(_ForwardIterator __first, _ForwardIterator __last, const allocator_type& __a,
|
||||||
typename enable_if<__is_forward_iterator<_ForwardIterator>::value &&
|
typename enable_if<__is_forward_iterator<_ForwardIterator>::value>::type* = 0);
|
||||||
is_constructible<
|
|
||||||
value_type,
|
|
||||||
typename iterator_traits<_ForwardIterator>::reference>::value>::type* = 0);
|
|
||||||
#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
|
#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
|
||||||
_LIBCPP_INLINE_VISIBILITY
|
_LIBCPP_INLINE_VISIBILITY
|
||||||
vector(initializer_list<value_type> __il);
|
vector(initializer_list<value_type> __il);
|
||||||
@ -589,20 +577,14 @@ public:
|
|||||||
typename enable_if
|
typename enable_if
|
||||||
<
|
<
|
||||||
__is_input_iterator <_InputIterator>::value &&
|
__is_input_iterator <_InputIterator>::value &&
|
||||||
!__is_forward_iterator<_InputIterator>::value &&
|
!__is_forward_iterator<_InputIterator>::value,
|
||||||
is_constructible<
|
|
||||||
value_type,
|
|
||||||
typename iterator_traits<_InputIterator>::reference>::value,
|
|
||||||
void
|
void
|
||||||
>::type
|
>::type
|
||||||
assign(_InputIterator __first, _InputIterator __last);
|
assign(_InputIterator __first, _InputIterator __last);
|
||||||
template <class _ForwardIterator>
|
template <class _ForwardIterator>
|
||||||
typename enable_if
|
typename enable_if
|
||||||
<
|
<
|
||||||
__is_forward_iterator<_ForwardIterator>::value &&
|
__is_forward_iterator<_ForwardIterator>::value,
|
||||||
is_constructible<
|
|
||||||
value_type,
|
|
||||||
typename iterator_traits<_ForwardIterator>::reference>::value,
|
|
||||||
void
|
void
|
||||||
>::type
|
>::type
|
||||||
assign(_ForwardIterator __first, _ForwardIterator __last);
|
assign(_ForwardIterator __first, _ForwardIterator __last);
|
||||||
@ -718,20 +700,14 @@ public:
|
|||||||
typename enable_if
|
typename enable_if
|
||||||
<
|
<
|
||||||
__is_input_iterator <_InputIterator>::value &&
|
__is_input_iterator <_InputIterator>::value &&
|
||||||
!__is_forward_iterator<_InputIterator>::value &&
|
!__is_forward_iterator<_InputIterator>::value,
|
||||||
is_constructible<
|
|
||||||
value_type,
|
|
||||||
typename iterator_traits<_InputIterator>::reference>::value,
|
|
||||||
iterator
|
iterator
|
||||||
>::type
|
>::type
|
||||||
insert(const_iterator __position, _InputIterator __first, _InputIterator __last);
|
insert(const_iterator __position, _InputIterator __first, _InputIterator __last);
|
||||||
template <class _ForwardIterator>
|
template <class _ForwardIterator>
|
||||||
typename enable_if
|
typename enable_if
|
||||||
<
|
<
|
||||||
__is_forward_iterator<_ForwardIterator>::value &&
|
__is_forward_iterator<_ForwardIterator>::value,
|
||||||
is_constructible<
|
|
||||||
value_type,
|
|
||||||
typename iterator_traits<_ForwardIterator>::reference>::value,
|
|
||||||
iterator
|
iterator
|
||||||
>::type
|
>::type
|
||||||
insert(const_iterator __position, _ForwardIterator __first, _ForwardIterator __last);
|
insert(const_iterator __position, _ForwardIterator __first, _ForwardIterator __last);
|
||||||
@ -1058,10 +1034,7 @@ template <class _Tp, class _Allocator>
|
|||||||
template <class _InputIterator>
|
template <class _InputIterator>
|
||||||
vector<_Tp, _Allocator>::vector(_InputIterator __first, _InputIterator __last,
|
vector<_Tp, _Allocator>::vector(_InputIterator __first, _InputIterator __last,
|
||||||
typename enable_if<__is_input_iterator <_InputIterator>::value &&
|
typename enable_if<__is_input_iterator <_InputIterator>::value &&
|
||||||
!__is_forward_iterator<_InputIterator>::value &&
|
!__is_forward_iterator<_InputIterator>::value>::type*)
|
||||||
is_constructible<
|
|
||||||
value_type,
|
|
||||||
typename iterator_traits<_InputIterator>::reference>::value>::type*)
|
|
||||||
{
|
{
|
||||||
#if _LIBCPP_DEBUG_LEVEL >= 2
|
#if _LIBCPP_DEBUG_LEVEL >= 2
|
||||||
__get_db()->__insert_c(this);
|
__get_db()->__insert_c(this);
|
||||||
@ -1074,10 +1047,7 @@ template <class _Tp, class _Allocator>
|
|||||||
template <class _InputIterator>
|
template <class _InputIterator>
|
||||||
vector<_Tp, _Allocator>::vector(_InputIterator __first, _InputIterator __last, const allocator_type& __a,
|
vector<_Tp, _Allocator>::vector(_InputIterator __first, _InputIterator __last, const allocator_type& __a,
|
||||||
typename enable_if<__is_input_iterator <_InputIterator>::value &&
|
typename enable_if<__is_input_iterator <_InputIterator>::value &&
|
||||||
!__is_forward_iterator<_InputIterator>::value &&
|
!__is_forward_iterator<_InputIterator>::value>::type*)
|
||||||
is_constructible<
|
|
||||||
value_type,
|
|
||||||
typename iterator_traits<_InputIterator>::reference>::value>::type*)
|
|
||||||
: __base(__a)
|
: __base(__a)
|
||||||
{
|
{
|
||||||
#if _LIBCPP_DEBUG_LEVEL >= 2
|
#if _LIBCPP_DEBUG_LEVEL >= 2
|
||||||
@ -1090,10 +1060,7 @@ vector<_Tp, _Allocator>::vector(_InputIterator __first, _InputIterator __last, c
|
|||||||
template <class _Tp, class _Allocator>
|
template <class _Tp, class _Allocator>
|
||||||
template <class _ForwardIterator>
|
template <class _ForwardIterator>
|
||||||
vector<_Tp, _Allocator>::vector(_ForwardIterator __first, _ForwardIterator __last,
|
vector<_Tp, _Allocator>::vector(_ForwardIterator __first, _ForwardIterator __last,
|
||||||
typename enable_if<__is_forward_iterator<_ForwardIterator>::value &&
|
typename enable_if<__is_forward_iterator<_ForwardIterator>::value>::type*)
|
||||||
is_constructible<
|
|
||||||
value_type,
|
|
||||||
typename iterator_traits<_ForwardIterator>::reference>::value>::type*)
|
|
||||||
{
|
{
|
||||||
#if _LIBCPP_DEBUG_LEVEL >= 2
|
#if _LIBCPP_DEBUG_LEVEL >= 2
|
||||||
__get_db()->__insert_c(this);
|
__get_db()->__insert_c(this);
|
||||||
@ -1109,10 +1076,7 @@ vector<_Tp, _Allocator>::vector(_ForwardIterator __first, _ForwardIterator __las
|
|||||||
template <class _Tp, class _Allocator>
|
template <class _Tp, class _Allocator>
|
||||||
template <class _ForwardIterator>
|
template <class _ForwardIterator>
|
||||||
vector<_Tp, _Allocator>::vector(_ForwardIterator __first, _ForwardIterator __last, const allocator_type& __a,
|
vector<_Tp, _Allocator>::vector(_ForwardIterator __first, _ForwardIterator __last, const allocator_type& __a,
|
||||||
typename enable_if<__is_forward_iterator<_ForwardIterator>::value &&
|
typename enable_if<__is_forward_iterator<_ForwardIterator>::value>::type*)
|
||||||
is_constructible<
|
|
||||||
value_type,
|
|
||||||
typename iterator_traits<_ForwardIterator>::reference>::value>::type*)
|
|
||||||
: __base(__a)
|
: __base(__a)
|
||||||
{
|
{
|
||||||
#if _LIBCPP_DEBUG_LEVEL >= 2
|
#if _LIBCPP_DEBUG_LEVEL >= 2
|
||||||
@ -1294,10 +1258,7 @@ template <class _InputIterator>
|
|||||||
typename enable_if
|
typename enable_if
|
||||||
<
|
<
|
||||||
__is_input_iterator <_InputIterator>::value &&
|
__is_input_iterator <_InputIterator>::value &&
|
||||||
!__is_forward_iterator<_InputIterator>::value &&
|
!__is_forward_iterator<_InputIterator>::value,
|
||||||
is_constructible<
|
|
||||||
_Tp,
|
|
||||||
typename iterator_traits<_InputIterator>::reference>::value,
|
|
||||||
void
|
void
|
||||||
>::type
|
>::type
|
||||||
vector<_Tp, _Allocator>::assign(_InputIterator __first, _InputIterator __last)
|
vector<_Tp, _Allocator>::assign(_InputIterator __first, _InputIterator __last)
|
||||||
@ -1311,10 +1272,7 @@ template <class _Tp, class _Allocator>
|
|||||||
template <class _ForwardIterator>
|
template <class _ForwardIterator>
|
||||||
typename enable_if
|
typename enable_if
|
||||||
<
|
<
|
||||||
__is_forward_iterator<_ForwardIterator>::value &&
|
__is_forward_iterator<_ForwardIterator>::value,
|
||||||
is_constructible<
|
|
||||||
_Tp,
|
|
||||||
typename iterator_traits<_ForwardIterator>::reference>::value,
|
|
||||||
void
|
void
|
||||||
>::type
|
>::type
|
||||||
vector<_Tp, _Allocator>::assign(_ForwardIterator __first, _ForwardIterator __last)
|
vector<_Tp, _Allocator>::assign(_ForwardIterator __first, _ForwardIterator __last)
|
||||||
@ -1795,10 +1753,7 @@ template <class _InputIterator>
|
|||||||
typename enable_if
|
typename enable_if
|
||||||
<
|
<
|
||||||
__is_input_iterator <_InputIterator>::value &&
|
__is_input_iterator <_InputIterator>::value &&
|
||||||
!__is_forward_iterator<_InputIterator>::value &&
|
!__is_forward_iterator<_InputIterator>::value,
|
||||||
is_constructible<
|
|
||||||
_Tp,
|
|
||||||
typename iterator_traits<_InputIterator>::reference>::value,
|
|
||||||
typename vector<_Tp, _Allocator>::iterator
|
typename vector<_Tp, _Allocator>::iterator
|
||||||
>::type
|
>::type
|
||||||
vector<_Tp, _Allocator>::insert(const_iterator __position, _InputIterator __first, _InputIterator __last)
|
vector<_Tp, _Allocator>::insert(const_iterator __position, _InputIterator __first, _InputIterator __last)
|
||||||
@ -1850,10 +1805,7 @@ template <class _Tp, class _Allocator>
|
|||||||
template <class _ForwardIterator>
|
template <class _ForwardIterator>
|
||||||
typename enable_if
|
typename enable_if
|
||||||
<
|
<
|
||||||
__is_forward_iterator<_ForwardIterator>::value &&
|
__is_forward_iterator<_ForwardIterator>::value,
|
||||||
is_constructible<
|
|
||||||
_Tp,
|
|
||||||
typename iterator_traits<_ForwardIterator>::reference>::value,
|
|
||||||
typename vector<_Tp, _Allocator>::iterator
|
typename vector<_Tp, _Allocator>::iterator
|
||||||
>::type
|
>::type
|
||||||
vector<_Tp, _Allocator>::insert(const_iterator __position, _ForwardIterator __first, _ForwardIterator __last)
|
vector<_Tp, _Allocator>::insert(const_iterator __position, _ForwardIterator __first, _ForwardIterator __last)
|
||||||
|
@ -28,10 +28,6 @@ test(Iterator first, Iterator last)
|
|||||||
assert(*i == *first);
|
assert(*i == *first);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct X
|
|
||||||
{
|
|
||||||
};
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
int a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 1, 0};
|
int a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 1, 0};
|
||||||
@ -47,7 +43,4 @@ int main()
|
|||||||
test<std::vector<int, stack_allocator<int, 18> > >(bidirectional_iterator<const int*>(a), bidirectional_iterator<const int*>(an));
|
test<std::vector<int, stack_allocator<int, 18> > >(bidirectional_iterator<const int*>(a), bidirectional_iterator<const int*>(an));
|
||||||
test<std::vector<int, stack_allocator<int, 18> > >(random_access_iterator<const int*>(a), random_access_iterator<const int*>(an));
|
test<std::vector<int, stack_allocator<int, 18> > >(random_access_iterator<const int*>(a), random_access_iterator<const int*>(an));
|
||||||
test<std::vector<int, stack_allocator<int, 18> > >(a, an);
|
test<std::vector<int, stack_allocator<int, 18> > >(a, an);
|
||||||
|
|
||||||
X x[2];
|
|
||||||
static_assert(!(std::is_constructible<std::vector<int>, X*, X*>::value), "");
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user