diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2009-06-20 22:27:04 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2009-06-20 22:27:04 +0000 |
commit | 2271f9c260f9f6bc9b2edcd2fca348853191b91d (patch) | |
tree | 80756b93035e693295383701a3179a3fb55b4e34 | |
parent | cb7a89619d7ac8fcefaab6c20d09bb55b7dc5cee (diff) | |
download | gcc-2271f9c260f9f6bc9b2edcd2fca348853191b91d.zip gcc-2271f9c260f9f6bc9b2edcd2fca348853191b91d.tar.gz gcc-2271f9c260f9f6bc9b2edcd2fca348853191b91d.tar.bz2 |
re PR libstdc++/40497 ([C++0x] troubles with std::next / std::prev declarations)
2009-06-20 Paolo Carlini <paolo.carlini@oracle.com>
PR libstdc++/40497
* include/bits/stl_iterator_base_funcs.h (next, prev): Fix the
signature per the current C++1x draft (N2857).
* testsuite/24_iterators/operations/40497.cc: Add.
From-SVN: r148751
-rw-r--r-- | libstdc++-v3/ChangeLog | 7 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/stl_iterator_base_funcs.h | 8 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/24_iterators/operations/40497.cc | 41 |
3 files changed, 52 insertions, 4 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 516e783..4ab36ce 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2009-06-20 Paolo Carlini <paolo.carlini@oracle.com> + + PR libstdc++/40497 + * include/bits/stl_iterator_base_funcs.h (next, prev): Fix the + signature per the current C++1x draft (N2857). + * testsuite/24_iterators/operations/40497.cc: Add. + 2009-06-19 Paolo Carlini <paolo.carlini@oracle.com> * include/bits/random.h (_Adaptor): Simplify for _DInputType always diff --git a/libstdc++-v3/include/bits/stl_iterator_base_funcs.h b/libstdc++-v3/include/bits/stl_iterator_base_funcs.h index 0a854fa..88ea829 100644 --- a/libstdc++-v3/include/bits/stl_iterator_base_funcs.h +++ b/libstdc++-v3/include/bits/stl_iterator_base_funcs.h @@ -175,8 +175,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) #ifdef __GXX_EXPERIMENTAL_CXX0X__ template<typename _InputIterator> inline _InputIterator - next(_InputIterator __x, typename - iterator_traits<_InputIterator>::difference_type __n = 1) + next(_InputIterator __x, + typename _InputIterator::difference_type __n = 1) { std::advance(__x, __n); return __x; @@ -184,8 +184,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) template<typename _BidirectionalIterator> inline _BidirectionalIterator - prev(_BidirectionalIterator __x, typename - iterator_traits<_BidirectionalIterator>::difference_type __n = 1) + prev(_BidirectionalIterator __x, + typename _BidirectionalIterator::difference_type __n = 1) { std::advance(__x, -__n); return __x; diff --git a/libstdc++-v3/testsuite/24_iterators/operations/40497.cc b/libstdc++-v3/testsuite/24_iterators/operations/40497.cc new file mode 100644 index 0000000..8b476b2 --- /dev/null +++ b/libstdc++-v3/testsuite/24_iterators/operations/40497.cc @@ -0,0 +1,41 @@ +// { dg-options "-std=gnu++0x" } +// { dg-do compile } + +// Copyright (C) 2009 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 3, 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 COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +namespace X +{ + class C { }; + + template<class T> void next(T) { } + template<class T> void prev(T) { } +} + +using namespace X; + +#include <string> + +using namespace std; + +// libstdc++/40497 +void test01() +{ + C c; + next(c); + prev(c); +} |