PR libstdc++/29134 (vector<bool> bits)

2006-09-22  Paolo Carlini  <pcarlini@suse.de>

	PR libstdc++/29134 (vector<bool> bits)
	* include/bits/stl_bvector.h (vector<bool>::max_size):
	Use allocator' max_size.
	* testsuite/23_containers/vector/bool/capacity/29134.cc: New.

	* testsuite/23_containers/deque/capacity/29134-2.cc: Minor tweak.
	* testsuite/23_containers/vector/capacity/29134-2.cc: Likewise.

From-SVN: r117148
This commit is contained in:
Paolo Carlini 2006-09-22 17:51:01 +00:00 committed by Paolo Carlini
parent dcd400b56f
commit 3b83e64bd3
5 changed files with 55 additions and 5 deletions

View File

@ -1,3 +1,13 @@
2006-09-22 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/29134 (vector<bool> bits)
* include/bits/stl_bvector.h (vector<bool>::max_size):
Use allocator' max_size.
* testsuite/23_containers/vector/bool/capacity/29134.cc: New.
* testsuite/23_containers/deque/capacity/29134-2.cc: Minor tweak.
* testsuite/23_containers/vector/capacity/29134-2.cc: Likewise.
2006-09-22 Paolo Carlini <pcarlini@suse.de>
* include/tr1/type_traits (add_reference): Robustify vs

View File

@ -581,7 +581,11 @@ template<typename _Alloc>
size_type
max_size() const
{ return size_type(-1); }
{
const size_type __asize = _M_get_Bit_allocator().max_size();
return (__asize <= size_type(-1) / int(_S_word_bit) ?
__asize * int(_S_word_bit) : size_type(-1));
}
size_type
capacity() const

View File

@ -20,7 +20,6 @@
#include <deque>
#include <stdexcept>
#include <limits>
#include <testsuite_hooks.h>
// libstdc++/29134
@ -33,7 +32,7 @@ void test01()
try
{
d.resize(numeric_limits<size_t>::max());
d.resize(size_t(-1));
}
catch(const std::length_error&)
{

View File

@ -0,0 +1,38 @@
// Copyright (C) 2006 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 2, 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 COPYING. If not, write to the Free
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// 23.2.5 class vector<bool> [lib.vector.bool]
#include <vector>
#include <testsuite_hooks.h>
// libstdc++/29134
void test01()
{
bool test __attribute__((unused)) = true;
std::vector<bool> vb;
VERIFY( vb.max_size() == std::vector<bool>::size_type(-1) );
}
int main()
{
test01();
return 0;
}

View File

@ -20,7 +20,6 @@
#include <vector>
#include <stdexcept>
#include <limits>
#include <testsuite_hooks.h>
// libstdc++/29134
@ -33,7 +32,7 @@ void test01()
try
{
v.resize(numeric_limits<size_t>::max());
v.resize(size_t(-1));
}
catch(const std::length_error&)
{