re PR libstdc++/47709 (is_heap(standard iterator) becomes ambiguous in C++0x mode)

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: r170089
This commit is contained in:
Paolo Carlini 2011-02-12 21:26:21 +00:00 committed by Paolo Carlini
parent 8957a0ecb7
commit 60a40f62c8
3 changed files with 42 additions and 1 deletions

View 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-12 Jakub Jelinek <jakub@redhat.com>
Jonathan Wakely <jwakely.gcc@gmail.com>

View 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
@ -426,6 +427,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
__out_last - __out_first);
}
#ifdef __GXX_EXPERIMENTAL_CXX0X__
using std::is_heap;
#else
/**
* This is an SGI extension.
* @ingroup SGIextensions
@ -465,6 +469,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
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++

View File

@ -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());
}