1 // { dg-do assemble  }
2 // { dg-options "-g" }
3 
4 typedef unsigned int size_t;
5 
6 
7 struct dummy { };
8 
9 struct arrrrrgh { };
10 
11 
12 template<class Par,class Rand = arrrrrgh>
13 struct whyyyyyyy { };
14 
15 
16 
17 
18 template<class T, class S =dummy>
19 struct grrrrrrrr { };
20 
21 
22 template<class Par, class Par2 =Par, class Rand =arrrrrgh>
23 class no_future
24 {
25 public:
26 
27 
28   template<class S>
no_future(const grrrrrrrr<whyyyyyyy<Par,Rand> *,S> & man)29   no_future(const grrrrrrrr<whyyyyyyy<Par,Rand>*,S>& man )  { }
30 
~no_future()31   ~no_future( ) { }
32 
33 private:
34 
35 
36   no_future(const no_future&);
37   no_future& operator=(const no_future&);
38 };
39 
40 
main()41 int main( )
42 {
43   grrrrrrrr<whyyyyyyy<double>*> man;
44 
45   no_future<double> here(man);
46 
47   return 0;
48 }
49