]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR libstdc++/47709 (is_heap(standard iterator) becomes ambiguous in C++0x mode)
authorPaolo Carlini <paolo.carlini@oracle.com>
Sat, 12 Feb 2011 21:26:58 +0000 (21:26 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Sat, 12 Feb 2011 21:26:58 +0000 (21:26 +0000)
2011-02-12  Paolo Carlini  <paolo.carlini@oracle.com>

PR libstdc++/47709
* include/ext/algorithm (is_heap): In C++0x mode import from
namespace std.
* testsuite/ext/is_heap/47709.cc: New.

From-SVN: r170090

libstdc++-v3/ChangeLog
libstdc++-v3/include/ext/algorithm
libstdc++-v3/testsuite/ext/is_heap/47709.cc [new file with mode: 0644]

index cabeca7dbe91e38bf3e43cac7ed3979a95e7aa25..f85a7c5b84bef12f90926de831618cdccddf250f 100644 (file)
@@ -1,3 +1,10 @@
+2011-02-12  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR libstdc++/47709
+       * include/ext/algorithm (is_heap): In C++0x mode import from
+       namespace std.
+       * testsuite/ext/is_heap/47709.cc: New.
+
 2011-02-08  Jonathan Wakely  <jwakely.gcc@gmail.com>
 
        * doc/xml/gnu/gpl-2.0.xml: Remove.
index cac4ff70e8e89e744d3da5f7c9523281b3d0498b..955479ce43f3bd63f47846b34a88fbab7b740f41 100644 (file)
@@ -1,6 +1,7 @@
 // Algorithm extensions -*- C++ -*-
 
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+// 2009, 2010, 2011
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -424,6 +425,9 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
                             __out_last - __out_first);
     }
 
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  using std::is_heap;
+#else
   /**
    *  This is an SGI extension.
    *  @ingroup SGIextensions
@@ -463,6 +467,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
 
       return std::__is_heap(__first, __comp, __last - __first);
     }
+#endif
 
   // is_sorted, a predicated testing whether a range is sorted in
   // nondescending order.  This is an extension, not part of the C++
diff --git a/libstdc++-v3/testsuite/ext/is_heap/47709.cc b/libstdc++-v3/testsuite/ext/is_heap/47709.cc
new file mode 100644 (file)
index 0000000..5eeaf58
--- /dev/null
@@ -0,0 +1,29 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+
+// Copyright (C) 2011 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/>.
+
+#include <ext/algorithm>
+#include <vector>
+
+// libstdc++/47709
+void foo()
+{
+  std::vector<int> v;
+  is_heap(v.begin(), v.end());
+}