1// Copyright (C) 2006-2015 Free Software Foundation, Inc.
2//
3// This file is part of the GNU ISO C++ Library.  This library is free
4// software; you can redistribute it and/or modify it under the
5// terms of the GNU General Public License as published by the
6// Free Software Foundation; either version 3, or (at your option)
7// any later version.
8
9// This library is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12// GNU General Public License for more details.
13
14// You should have received a copy of the GNU General Public License along
15// with this library; see the file COPYING3.  If not see
16// <http://www.gnu.org/licenses/>.
17
18// 23.2.5 class vector<bool> [lib.vector.bool]
19
20#include <vector>
21#include <limits>
22#include <testsuite_hooks.h>
23
24// libstdc++/29134
25void test01()
26{
27  bool test __attribute__((unused)) = true;
28
29  using std::vector;
30  using std::numeric_limits;
31
32#ifdef _GLIBCXX_DEBUG
33  using std::_GLIBCXX_STD_C::_S_word_bit;
34#elif defined(_GLIBCXX_PROFILE)
35  using std::_GLIBCXX_STD_C::_S_word_bit;
36#else
37  using std::_S_word_bit;
38#endif
39
40  // Actually, vector<bool> is special, see libstdc++/31370.
41  vector<bool> vb;
42  typedef vector<bool>::difference_type difference_type;
43  typedef vector<bool>::size_type size_type;
44  VERIFY( vb.max_size()
45	  == size_type(numeric_limits<difference_type>::max()
46		       - int(_S_word_bit) + 1) );
47}
48
49int main()
50{
51  test01();
52  return 0;
53}
54