TypeTuple of functions

Daniel Murphy yebblies at nospamgmail.com
Thu Jan 26 20:58:49 PST 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 at lycos.com> wrote in message 
news:jfs683$2mqh$1 at 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 




More information about the Digitalmars-d-learn mailing list