diff options
author | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-05-29 12:21:26 +0000 |
---|---|---|
committer | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-05-29 12:21:26 +0000 |
commit | 481fca456a283bde417a135ec974a4cb31998f26 (patch) | |
tree | f03e8ad2ce19643ac165724dc88b180f89e0fcfa | |
parent | ddeeea02661eabcefa5c0503b45c9606b82dd349 (diff) | |
download | gcc-481fca456a283bde417a135ec974a4cb31998f26.tar.gz |
2003-05-29 Sylvain Pion <Sylvain.Pion@mpi-sb.mpg.de>
PR libstdc++/10783
* include/bits/stl_iterator.h (class __normal_iterator):
Don't inherit from iterator, add missing typedefs.
2003-05-29 Paolo Carlini <pcarlini@unitus.it>
* testsuite/24_iterators/reverse_iterator.cc: Split up, as follows.
* testsuite/24_iterators/reverse_iterator/1.cc: New.
* testsuite/24_iterators/reverse_iterator/2.cc: New.
* testsuite/24_iterators/reverse_iterator/3.cc: New, from
PR libstdc++/10783.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@67223 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | libstdc++-v3/ChangeLog | 14 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/stl_iterator.h | 8 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/24_iterators/reverse_iterator/1.cc (renamed from libstdc++-v3/testsuite/24_iterators/reverse_iterator.cc) | 29 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/24_iterators/reverse_iterator/2.cc | 54 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/24_iterators/reverse_iterator/3.cc | 40 |
5 files changed, 112 insertions, 33 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 455331d4cb2..e503c7ee24b 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,17 @@ +2003-05-29 Sylvain Pion <Sylvain.Pion@mpi-sb.mpg.de> + + PR libstdc++/10783 + * include/bits/stl_iterator.h (class __normal_iterator): + Don't inherit from iterator, add missing typedefs. + +2003-05-29 Paolo Carlini <pcarlini@unitus.it> + + * testsuite/24_iterators/reverse_iterator.cc: Split up, as follows. + * testsuite/24_iterators/reverse_iterator/1.cc: New. + * testsuite/24_iterators/reverse_iterator/2.cc: New. + * testsuite/24_iterators/reverse_iterator/3.cc: New, from + PR libstdc++/10783. + 2003-05-27 Steve Ellcey <sje@cup.hp.com> * config/os/hpux/os_defines.h: Define _LIBUNWIND_STD_ABI if we are diff --git a/libstdc++-v3/include/bits/stl_iterator.h b/libstdc++-v3/include/bits/stl_iterator.h index fd066cc7e1f..a996f4c34ed 100644 --- a/libstdc++-v3/include/bits/stl_iterator.h +++ b/libstdc++-v3/include/bits/stl_iterator.h @@ -569,16 +569,14 @@ namespace __gnu_cxx using std::iterator; template<typename _Iterator, typename _Container> class __normal_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>::pointer, - typename iterator_traits<_Iterator>::reference> { protected: _Iterator _M_current; public: + typedef typename iterator_traits<_Iterator>::iterator_category + iterator_category; + typedef typename iterator_traits<_Iterator>::value_type value_type; typedef typename iterator_traits<_Iterator>::difference_type difference_type; typedef typename iterator_traits<_Iterator>::reference reference; diff --git a/libstdc++-v3/testsuite/24_iterators/reverse_iterator.cc b/libstdc++-v3/testsuite/24_iterators/reverse_iterator/1.cc index f828a02218d..1278a21e8bb 100644 --- a/libstdc++-v3/testsuite/24_iterators/reverse_iterator.cc +++ b/libstdc++-v3/testsuite/24_iterators/reverse_iterator/1.cc @@ -1,6 +1,6 @@ // 2001-06-21 Benjamin Kosnik <bkoz@redhat.com> -// Copyright (C) 2001, 2002 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -46,38 +46,11 @@ void test01() typedef test_iterator::iterator_category iteratory_category; } - // Make sure iterator can be instantiated. template class std::reverse_iterator<int*>; -void test02() -{ - typedef std::reverse_iterator<int*> iterator_type; - iterator_type it01; - iterator_type it02; - - // Sanity check non-member operators and functions can be instantiated. - it01 == it02; - it01 != it02; - it01 < it02; - it01 <= it02; - it01 > it02; - it01 >= it02; - it01 - it02; - 5 + it02; -} - -// Check data member 'current' accessible. -class test_dm : public std::reverse_iterator<int*> -{ - int* p; -public: - test_dm(): p(current) { } -}; - int main() { test01(); - test02(); return 0; } diff --git a/libstdc++-v3/testsuite/24_iterators/reverse_iterator/2.cc b/libstdc++-v3/testsuite/24_iterators/reverse_iterator/2.cc new file mode 100644 index 00000000000..f227bcbcc98 --- /dev/null +++ b/libstdc++-v3/testsuite/24_iterators/reverse_iterator/2.cc @@ -0,0 +1,54 @@ +// 2001-06-21 Benjamin Kosnik <bkoz@redhat.com> + +// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +// USA. + +// 24.4.1.2 Reverse iterators + +#include <iterator> + +void test02() +{ + typedef std::reverse_iterator<int*> iterator_type; + iterator_type it01; + iterator_type it02; + + // Sanity check non-member operators and functions can be instantiated. + it01 == it02; + it01 != it02; + it01 < it02; + it01 <= it02; + it01 > it02; + it01 >= it02; + it01 - it02; + 5 + it02; +} + +// Check data member 'current' accessible. +class test_dm : public std::reverse_iterator<int*> +{ + int* p; +public: + test_dm(): p(current) { } +}; + +int main() +{ + test02(); + return 0; +} diff --git a/libstdc++-v3/testsuite/24_iterators/reverse_iterator/3.cc b/libstdc++-v3/testsuite/24_iterators/reverse_iterator/3.cc new file mode 100644 index 00000000000..ffb6e779db0 --- /dev/null +++ b/libstdc++-v3/testsuite/24_iterators/reverse_iterator/3.cc @@ -0,0 +1,40 @@ +// 2003-05-29 Paolo Carlini <pcarlini@unitus.it> + +// Copyright (C) 2003 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +// USA. + +// 24.4.1.2 Reverse iterators + +#include <iterator> +#include <vector> +#include <testsuite_hooks.h> + +// libstdc++/10783 +void test03() +{ + bool test = true; + + typedef std::vector<int> V; + VERIFY( sizeof(V::iterator) == sizeof(V::reverse_iterator) ); +} + +int main() +{ + test03(); + return 0; +} |