1 // Simple smoke test to see that the demangler is actually working
2 
3 namespace abc {
4 template <typename T1, typename T2>
5 class def {
6   public:
7     T1 xyzzy(T1 *p, T2 *)
8     {
9       return *p ? 10 : 20;
10     }
11   };
12 };
13 
14 template <typename T>
15 class magic {
16 public:
17   T xyzzy(T *p)
18   {
19     return (new abc::def<int,typeof(*this)>)->xyzzy(p, 0);
20   }
21 };
22 
23 int main()
24 {
25    magic<int> *c = new magic<int>;
26 
27    c->xyzzy(new int);
28    return 0;
29 }
30