1// Test for Container using non-standard pointer types.
2
3// Copyright (C) 2008, 2009
4// Free Software Foundation, Inc.
5//
6// This file is part of the GNU ISO C++ Library.  This library is free
7// software; you can redistribute it and/or modify it under the
8// terms of the GNU General Public License as published by the
9// Free Software Foundation; either version 3, or (at your option)
10// any later version.
11
12// This library is distributed in the hope that it will be useful,
13// but WITHOUT ANY WARRANTY; without even the implied warranty of
14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15// GNU General Public License for more details.
16
17// You should have received a copy of the GNU General Public License along
18// with this library; see the file COPYING3.  If not see
19// <http://www.gnu.org/licenses/>.
20
21
22#include <vector>
23#include <testsuite_hooks.h>
24#include <ext/extptr_allocator.h>
25
26// libstdc++/23578
27void test01()
28{
29  bool test __attribute__((unused)) = true;
30  typedef std::vector<int, __gnu_cxx::_ExtPtr_allocator<int> > vector_type;
31
32  {
33    const int A[] = { 0, 1, 2, 3, 4 };
34    vector_type v(A, A + 5);
35    VERIFY( v.data() == &v.front() );
36    int* pi = &* v.data();
37    VERIFY( *pi == 0 );
38  }
39
40  {
41    const int A[] = { 4, 3, 2, 1, 0 };
42    const vector_type cv(A, A + 5);
43    VERIFY( cv.data() == &cv.front() );
44    const int* pci = &* cv.data();
45    VERIFY( *pci == 4 );
46  }
47}
48
49int main()
50{
51  test01();
52  return 0;
53}
54