diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 516e783aa4a..4ab36ce5028 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2009-06-20 Paolo Carlini + + 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 * 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 0a854faa14c..88ea8293ba6 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 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 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 00000000000..8b476b29114 --- /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 +// . + +namespace X +{ + class C { }; + + template void next(T) { } + template void prev(T) { } +} + +using namespace X; + +#include + +using namespace std; + +// libstdc++/40497 +void test01() +{ + C c; + next(c); + prev(c); +}