1 // { dg-lto-do link }
2 
3 typedef long size_t;
4 template < class, class > struct pair
5 {
6 }
7 ;
8 template < typename > class allocator;
9 template < typename > struct equal_to;
10 
11 template < class > struct hash;
12 template
13 <
14 class, class, class, class, class, class > struct dense_hashtable_iterator;
15 template
16 <
17 class,
18     class, class, class, class, class > struct dense_hashtable_const_iterator;
19 template
20 <
21 class
22 Value,
23     class
24     Key,
25     class
26     HashFcn,
27     class ExtractKey, class EqualKey, class Alloc > class dense_hashtable
28 {
29 public:
30     typedef Key key_type;
31     typedef Value value_type;
32     typedef size_t size_type;
33     typedef
34 	dense_hashtable_iterator
35 	< Value, Key, HashFcn, ExtractKey, EqualKey, Alloc > iterator;
36     typedef
37 	dense_hashtable_const_iterator
38 	< Value, Key, HashFcn, ExtractKey, EqualKey, Alloc > const_iterator;
39     static const size_type ILLEGAL_BUCKET = (-1);
find_position(key_type)40     pair < size_type, size_type > find_position (key_type)
41       {
42 	size_type insert_pos = ILLEGAL_BUCKET;
43       }
insert_noresize(value_type obj)44     pair < iterator, bool > insert_noresize (value_type obj)
45       {
46 	pair < size_type, size_type > pos = find_position ((obj));
47       }
insert(value_type & obj)48     pair < iterator, bool > insert (value_type & obj)
49       {
50 	insert_noresize (obj);
51       }
52     ExtractKey get_key;
53 }
54 
55 ;
56 template
57 <
58 class
59 Value,
60     class
61     HashFcn
62     =
63     hash
64     <
65     Value
66     >,
67     class
68     EqualKey
69     =
70     equal_to < Value >, class Alloc = allocator < Value > >class dense_hash_set
71 {
72   struct Identity
73     {
74     }
75   ;
76   typedef
77       dense_hashtable < Value, Value, HashFcn, Identity, EqualKey, Alloc > ht;
78   ht rep;
79 public:
80   typedef typename ht::value_type value_type;
81   typedef typename ht::const_iterator iterator;
insert(value_type obj)82   pair < iterator, bool > insert (value_type obj)
83     {
84       pair < typename ht::iterator, bool > p = rep.insert (obj);
85     }
86 }
87 
88 ;
89 class blah_46
90 {
91 }
92 ;
93 struct foo_10:dense_hash_set < blah_46 >
94 {
95 }
96 ;
97 class foo_14
98 {
99   void hmmmmh_5 (blah_46);
100   foo_10 negative_rrrrrrr_type_data_;
101 }
102 ;
103 void
hmmmmh_5(blah_46 hahaha_id)104 foo_14::hmmmmh_5 (blah_46 hahaha_id)
105 {
106   negative_rrrrrrr_type_data_.insert (hahaha_id);
107 }
108 
main()109 int main () { return 0; }
110