digitalmars.D.learn - TypeTuple of functions
- bearophile (17/17) Jan 26 2012 I'm asking questions all the time :-)
- H. S. Teoh (12/28) Jan 26 2012 [...]
- Daniel Murphy (10/30) Jan 26 2012 Differing part:
I'm asking questions all the time :-) I have just closed this bug report as fixed: http://d.puremagic.com/issues/show_bug.cgi?id=5695 Using that idiom I've seen a difference: 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). Bye and thank you, bearophile
Jan 26 2012
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.
Jan 26 2012
Differing part: FNaNb xdZ d6 PFNaNbNfxdZxd6 P -> pointer Nf -> safe x -> const The second one is a function pointer not a function, is inferred to be safe, and inferred to return const(double). "bearophile" <bearophileHUGS lycos.com> wrote in message news:jfs683$2mqh$1 digitalmars.com...I'm asking questions all the time :-) I have just closed this bug report as fixed: http://d.puremagic.com/issues/show_bug.cgi?id=5695 Using that idiom I've seen a difference: 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). Bye and thank you, bearophile
Jan 26 2012