OSDN Git Service

2010-02-15 Richard Guenther <rguenther@suse.de>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / torture / pr42883.C
1 // { dg-do compile }
2
3 typedef __SIZE_TYPE__ size_t;
4 namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
5     template<typename _Tp>     class new_allocator     {
6     public:
7         typedef size_t size_type;
8         typedef _Tp* pointer;
9         typedef _Tp& reference;
10         void       deallocate(pointer __p, size_type)       {
11             ::operator delete(__p);
12         }
13     };
14 }
15 namespace std __attribute__ ((__visibility__ ("default"))) {
16     template<typename _Tp>     class allocator: public __gnu_cxx::new_allocator<_Tp>     {
17     public:
18         template<typename _Tp1>         struct rebind         {
19             typedef allocator<_Tp1> other;
20         };
21     };
22     template<typename _Tp, typename _Alloc>     struct _Vector_base     {
23         typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type;
24         struct _Vector_impl       : public _Tp_alloc_type       {
25             typename _Tp_alloc_type::pointer _M_start;
26             typename _Tp_alloc_type::pointer _M_end_of_storage;
27         };
28         ~_Vector_base()       {
29             _M_deallocate(this->_M_impl._M_start, this->_M_impl._M_end_of_storage         - this->_M_impl._M_start);
30         }
31         _Vector_impl _M_impl;
32         void       _M_deallocate(typename _Tp_alloc_type::pointer __p, size_t __n)       {
33             if (__p)    _M_impl.deallocate(__p, __n);
34         }
35     };
36     template<typename _Tp, typename _Alloc = std::allocator<_Tp> >     class vector : protected _Vector_base<_Tp, _Alloc>     {
37         typedef _Vector_base<_Tp, _Alloc> _Base;
38         typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
39     public:
40         typedef typename _Tp_alloc_type::reference reference;
41         typedef size_t size_type;
42         size_type       size() const       {
43         }
44         reference       operator[](size_type __n)       {
45         }
46     };
47 };
48 class vtkConvexPointSet  {
49 public:
50     static vtkConvexPointSet *New();
51 };
52 void MakeInternalMesh() {
53     std::vector< int > tempFaces[2];
54     std::vector< int > firstFace;
55     int i, j, k;
56     for(i = 0; i < 1000; i++)     {
57         for(int pointCount = 0; pointCount < 1000; pointCount++)        {
58             for(j = 0; j < (int)tempFaces[0].size(); k++)
59               if(tempFaces[0][j] == tempFaces[1][k])            break;
60         }
61         vtkConvexPointSet::New();
62     }
63 }