]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR libstdc++/40497 ([C++0x] troubles with std::next / std::prev declarations)
authorPaolo Carlini <paolo.carlini@oracle.com>
Sat, 20 Jun 2009 22:27:04 +0000 (22:27 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Sat, 20 Jun 2009 22:27:04 +0000 (22:27 +0000)
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

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/stl_iterator_base_funcs.h
libstdc++-v3/testsuite/24_iterators/operations/40497.cc [new file with mode: 0644]

index 516e783aa4a1ebd19a3e68f7b5462321de6f44db..4ab36ce50288af2ded554a39b5b65c30160d5248 100644 (file)
@@ -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
index 0a854faa14cd967b15b11f32f8227bcc8afad68d..88ea8293ba604efe5438dc9893e56065fd06aa3a 100644 (file)
@@ -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 (file)
index 0000000..8b476b2
--- /dev/null
@@ -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);
+}