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