From 86f6262d6107ad53fe70b80be0efb4d4e26d4df2 Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Thu, 29 May 2003 12:21:26 +0000 Subject: [PATCH] [multiple changes] 2003-05-29 Sylvain Pion PR libstdc++/10783 * include/bits/stl_iterator.h (class __normal_iterator): Don't inherit from iterator, add missing typedefs. 2003-05-29 Paolo Carlini * 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. From-SVN: r67223 --- libstdc++-v3/ChangeLog | 14 +++++ libstdc++-v3/include/bits/stl_iterator.h | 8 ++- .../1.cc} | 29 +--------- .../24_iterators/reverse_iterator/2.cc | 54 +++++++++++++++++++ .../24_iterators/reverse_iterator/3.cc | 40 ++++++++++++++ 5 files changed, 112 insertions(+), 33 deletions(-) rename libstdc++-v3/testsuite/24_iterators/{reverse_iterator.cc => reverse_iterator/1.cc} (76%) create mode 100644 libstdc++-v3/testsuite/24_iterators/reverse_iterator/2.cc create mode 100644 libstdc++-v3/testsuite/24_iterators/reverse_iterator/3.cc 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 + + PR libstdc++/10783 + * include/bits/stl_iterator.h (class __normal_iterator): + Don't inherit from iterator, add missing typedefs. + +2003-05-29 Paolo Carlini + + * 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 * 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 class __normal_iterator - : public 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 similarity index 76% rename from libstdc++-v3/testsuite/24_iterators/reverse_iterator.cc rename to 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 -// 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; -void test02() -{ - typedef std::reverse_iterator 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* 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 + +// 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 + +void test02() +{ + typedef std::reverse_iterator 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* 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 + +// 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 +#include +#include + +// libstdc++/10783 +void test03() +{ + bool test = true; + + typedef std::vector V; + VERIFY( sizeof(V::iterator) == sizeof(V::reverse_iterator) ); +} + +int main() +{ + test03(); + return 0; +} -- 2.30.2