Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/torture/pr54838.C @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
// { dg-do compile } // { dg-options "-ftracer -fno-tree-dce -fno-tree-sra" } // { dg-additional-options "-Wno-return-type" } struct bidirectional_iterator_tag {}; struct random_access_iterator_tag:bidirectional_iterator_tag {}; template < typename _Category, typename, typename _Distance, typename > struct iterator { typedef _Distance difference_type; }; template < typename _Iterator > struct iterator_traits { typedef typename _Iterator::difference_type difference_type; }; template < typename _Tp > struct iterator_traits <_Tp * > { typedef random_access_iterator_tag iterator_category; typedef _Tp value_type; typedef int difference_type; typedef _Tp reference; }; template < typename _Iterator > class reverse_iterator: public iterator < typename iterator_traits < _Iterator >::iterator_category, typename iterator_traits < _Iterator >::value_type, typename iterator_traits < _Iterator >::difference_type, typename iterator_traits < _Iterator >::reference > { _Iterator current; public: typedef _Iterator iterator_type; reverse_iterator (const reverse_iterator & __x):current (__x.current) {} iterator_type base () { return current; } reverse_iterator operator++ () { --current; } }; template < typename _Iterator > bool operator == (reverse_iterator < _Iterator > __x, reverse_iterator < _Iterator > __y) { return __x.base () == __y.base (); } template < typename _Iterator > typename reverse_iterator < _Iterator >::difference_type operator - (reverse_iterator < _Iterator >, reverse_iterator < _Iterator >) {} template < typename _RandomAccessIterator > _RandomAccessIterator __find (_RandomAccessIterator __first, _RandomAccessIterator __last) { typename iterator_traits < _RandomAccessIterator >::difference_type __trip_count (__last - __first); for (; __trip_count; --__trip_count) ++__first; return __last; } typedef reverse_iterator < int* > _ForwardIterator1; _ForwardIterator1 search (_ForwardIterator1 __first1, _ForwardIterator1 __last1) { for (;;) { __first1 = __find (__first1, __last1); if (__first1 == __last1) return __last1; } }