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.