Commit 3b83e64b by Paolo Carlini Committed by Paolo Carlini

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
parent dcd400b5
2006-09-22 Paolo Carlini <pcarlini@suse.de> 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 * include/tr1/type_traits (add_reference): Robustify vs
reference to void. reference to void.
* testsuite/tr1/4_metaprogramming/reference_modifications/ * testsuite/tr1/4_metaprogramming/reference_modifications/
......
...@@ -581,7 +581,11 @@ template<typename _Alloc> ...@@ -581,7 +581,11 @@ template<typename _Alloc>
size_type size_type
max_size() const 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 size_type
capacity() const capacity() const
......
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
#include <deque> #include <deque>
#include <stdexcept> #include <stdexcept>
#include <limits>
#include <testsuite_hooks.h> #include <testsuite_hooks.h>
// libstdc++/29134 // libstdc++/29134
...@@ -33,7 +32,7 @@ void test01() ...@@ -33,7 +32,7 @@ void test01()
try try
{ {
d.resize(numeric_limits<size_t>::max()); d.resize(size_t(-1));
} }
catch(const std::length_error&) catch(const std::length_error&)
{ {
......
// 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;
}
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
#include <vector> #include <vector>
#include <stdexcept> #include <stdexcept>
#include <limits>
#include <testsuite_hooks.h> #include <testsuite_hooks.h>
// libstdc++/29134 // libstdc++/29134
...@@ -33,7 +32,7 @@ void test01() ...@@ -33,7 +32,7 @@ void test01()
try try
{ {
v.resize(numeric_limits<size_t>::max()); v.resize(size_t(-1));
} }
catch(const std::length_error&) catch(const std::length_error&)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment