Thread overview | |||||
---|---|---|---|---|---|
|
January 26, 2012 TypeTuple of functions | ||||
---|---|---|---|---|
| ||||
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 |
January 26, 2012 Re: TypeTuple of functions | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile | 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. |
January 27, 2012 Re: TypeTuple of functions | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile | 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 |
Copyright © 1999-2021 by the D Language Foundation