1 // { dg-do compile }
2 
3 namespace internal {
4     template < class DSC, bool Const >   struct CC_iterator   {
5 	typedef CC_iterator iterator;
6 	typedef typename DSC::value_type value_type;
7 	typedef const value_type* pointer;
8 	CC_iterator ()     ;
CC_iteratorCC_iterator9 	CC_iterator (const iterator &it)     {
10 	}
11 	pointer p;
12 	pointer operator->() const ;
13     };
14 }
15 template < class T > struct Compact_container {
16     typedef Compact_container <T> Self;
17     typedef T value_type;
18     typedef internal::CC_iterator<Self, false> iterator;
19 };
20 template < typename TDS = void > struct Periodic_3_triangulation_ds_cell_base_3 {
21     typedef typename TDS::Vertex_handle Vertex_handle;
vertexPeriodic_3_triangulation_ds_cell_base_322     const Vertex_handle& vertex(int i) const   {
23     }
24 };
25 struct Triangulation_data_structure_3    {
26     typedef Triangulation_data_structure_3 Tds;
27     typedef Periodic_3_triangulation_ds_cell_base_3<Tds> Cell;
28     typedef Compact_container<Cell> Cell_range;
29     typedef Compact_container<int> Vertex_range;
30     typedef typename Cell_range::iterator Cell_handle;
31     typedef typename Vertex_range::iterator Vertex_handle;
32 };
33 typedef Triangulation_data_structure_3 TDS1;
34 template <  class > struct Periodic_3_Delaunay_triangulation_3 {
35     typedef TDS1::Vertex_handle Vertex_handle;
36     typedef TDS1::Cell_handle Cell_handle;
compare_distancePeriodic_3_Delaunay_triangulation_337     int compare_distance() const {
38     }
39     Vertex_handle nearest_vertex() const;
40 };
nearest_vertex()41 template < class Tds > typename Periodic_3_Delaunay_triangulation_3<Tds>::Vertex_handle Periodic_3_Delaunay_triangulation_3<Tds>::nearest_vertex() const {
42     Cell_handle c ;
43     Vertex_handle nearest = c->vertex(0);
44     nearest = (compare_distance() == -1) ?       nearest : c->vertex(0);
45     return nearest;
46 }
47 typedef Periodic_3_Delaunay_triangulation_3<TDS1> PDT1;
48 struct Periodic_3_triangulation_hierarchy_3   : PDT1 {
49     Vertex_handle   nearest_vertex() const;
50 };
nearest_vertex()51 Periodic_3_triangulation_hierarchy_3::Vertex_handle Periodic_3_triangulation_hierarchy_3:: nearest_vertex() const {
52     return PDT1::nearest_vertex();
53 }
54