On Thu, Jan 26, 2012 at 01:32:35PM -0500, bearophile wrote: [...] > template TypeTuple(TList...) { > alias TList TypeTuple; > } > > double f1(in double x) pure nothrow { return x; } > alias TypeTuple!(f1) funcs1; > > alias TypeTuple!(function(in double x) pure nothrow { return x; }) funcs2; > > void main() { > pragma(msg, typeid(typeof(funcs1[0])).stringof); // > &D18TypeInfo_FNaNbxdZd6__initZ > pragma(msg, typeid(typeof(funcs2[0])).stringof); // > &D22TypeInfo_PFNaNbNfxdZxd6__initZ > } > > > Do you know what's the difference between those two functions? (I am not able > to read mangled names). [...]
You could just use: writeln(typeid(typeof(...))); instead; it gives you readable names. I modified your code and ran it, and got: double() const(double)()* T -- Computers are like a jungle: they have monitor lizards, rams, mice, c-moss, binary trees... and bugs.