stl_heap.h (pop_heap): Check for non-empty range in overload taking a predicate.

* include/bits/stl_heap.h (pop_heap): Check for non-empty range in
	overload taking a predicate.
	* testsuite/25_algorithms/pop_heap/empty2_neg.cc: New.

Co-Authored-By: Jonathan Wakely <jwakely.gcc@gmail.com>

From-SVN: r181987
This commit is contained in:
Markus Trippelsdorf 2011-12-04 13:21:53 +00:00 committed by Jonathan Wakely
parent fcff2e9c26
commit e13afbace1
3 changed files with 46 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2011-12-04 Markus Trippelsdorf <markus@trippelsdorf.de>
Jonathan Wakely <jwakely.gcc@gmail.com>
* include/bits/stl_heap.h (pop_heap): Check for non-empty range in
overload taking a predicate.
* testsuite/25_algorithms/pop_heap/empty2_neg.cc: New.
2011-12-03 Jonathan Wakely <jwakely.gcc@gmail.com>
* include/debug/macros.h (__glibcxx_check_non_empty_range): Define.

View File

@ -361,6 +361,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
__glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
_RandomAccessIterator>)
__glibcxx_requires_valid_range(__first, __last);
__glibcxx_requires_non_empty_range(__first, __last);
__glibcxx_requires_heap_pred(__first, __last, __comp);
--__last;

View File

@ -0,0 +1,38 @@
// 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 Pred 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/>.
// 25.3.6 Heap operations [lib.alg.heap.operations]
// { dg-require-debug-mode "" }
// { dg-do run { xfail *-*-* } }
#include <algorithm>
#include <functional>
void
test01()
{
int i = 0;
std::pop_heap(&i, &i, std::less<int>());
}
int
main()
{
test01();
return 0;
}