annotate gcc/testsuite/g++.dg/torture/20090329-1.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* { dg-do compile } */
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2 /* { dg-additional-options "-Wno-return-type" } */
111
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 struct input_iterator_tag { };
kono
parents:
diff changeset
5 template<typename _Category, typename _Tp, typename _Distance = long, typename _Pointer = _Tp*, typename _Reference = _Tp&>
kono
parents:
diff changeset
6 struct iterator {
kono
parents:
diff changeset
7 typedef _Category iterator_category;
kono
parents:
diff changeset
8 };
kono
parents:
diff changeset
9 template<typename _Iterator> struct iterator_traits {
kono
parents:
diff changeset
10 typedef typename _Iterator::iterator_category iterator_category;
kono
parents:
diff changeset
11 };
kono
parents:
diff changeset
12 template<typename, typename> struct __lc_rai {
kono
parents:
diff changeset
13 template<typename _II1, typename _II2>
kono
parents:
diff changeset
14 static _II1 __newlast1(_II1, _II1 __last1, _II2, _II2) {
kono
parents:
diff changeset
15 return __last1;
kono
parents:
diff changeset
16 }
kono
parents:
diff changeset
17 template<typename _II>
kono
parents:
diff changeset
18 static bool __cnd2(_II __first, _II __last) {
kono
parents:
diff changeset
19 return __first != __last;
kono
parents:
diff changeset
20 }
kono
parents:
diff changeset
21 };
kono
parents:
diff changeset
22 template<typename _II1, typename _II2, typename _Compare>
kono
parents:
diff changeset
23 bool lexicographical_compare(_II1 __first1, _II1 __last1, _II2 __first2,
kono
parents:
diff changeset
24 _II2 __last2, _Compare __comp) {
kono
parents:
diff changeset
25 typedef typename iterator_traits<_II1>::iterator_category _Category1;
kono
parents:
diff changeset
26 typedef typename iterator_traits<_II2>::iterator_category _Category2;
kono
parents:
diff changeset
27 typedef __lc_rai<_Category1, _Category2> __rai_type;
kono
parents:
diff changeset
28 __last1 = __rai_type::__newlast1(__first1, __last1, __first2, __last2);
kono
parents:
diff changeset
29 for (;
kono
parents:
diff changeset
30 __first1 != __last1 && __rai_type::__cnd2(__first2, __last2);
kono
parents:
diff changeset
31 ++__first1, ++__first2) {
kono
parents:
diff changeset
32 if (__comp(*__first1, *__first2)) return true;
kono
parents:
diff changeset
33 }
kono
parents:
diff changeset
34 }
kono
parents:
diff changeset
35 void __assert_fail () throw () __attribute__ ((__noreturn__));
kono
parents:
diff changeset
36 template<typename T> struct BoundsContainer { };
kono
parents:
diff changeset
37 template<class T> class input_iterator_wrapper : public iterator<input_iterator_tag, T, long, T*, T&> {
kono
parents:
diff changeset
38 public:
kono
parents:
diff changeset
39 typedef BoundsContainer<T> ContainerType;
kono
parents:
diff changeset
40 T* ptr;
kono
parents:
diff changeset
41 ContainerType* SharedInfo;
kono
parents:
diff changeset
42 input_iterator_wrapper(const input_iterator_wrapper& in) : ptr(in.ptr), SharedInfo(in.SharedInfo) { }
kono
parents:
diff changeset
43 bool operator==(const input_iterator_wrapper& in) const {
kono
parents:
diff changeset
44 (static_cast<void> ((SharedInfo != __null
kono
parents:
diff changeset
45 && SharedInfo == in.SharedInfo)
kono
parents:
diff changeset
46 ? 0 : (__assert_fail (), 0)));
kono
parents:
diff changeset
47 }
kono
parents:
diff changeset
48 bool operator!=(const input_iterator_wrapper& in) const {
kono
parents:
diff changeset
49 return !(*this == in);
kono
parents:
diff changeset
50 }
kono
parents:
diff changeset
51 T& operator*() const { }
kono
parents:
diff changeset
52 input_iterator_wrapper& operator++() { }
kono
parents:
diff changeset
53 };
kono
parents:
diff changeset
54 struct X { };
kono
parents:
diff changeset
55 bool predicate(const X&, const X&) {
kono
parents:
diff changeset
56 return true;
kono
parents:
diff changeset
57 }
kono
parents:
diff changeset
58 bool test2(input_iterator_wrapper<X>& x) {
kono
parents:
diff changeset
59 return lexicographical_compare(x, x, x, x, predicate);
kono
parents:
diff changeset
60 }