July 09, 2013 function type stringification | ||||
---|---|---|---|---|
| ||||
Attachments:
| I'm a bit confused with the behavior of function type stringification: ---- int main(string[]args){ auto foo=&main; pragma(msg,typeid(typeof(foo))); pragma(msg,typeid(typeof(foo)).stringof); //pragma(msg,typeid(typeof(foo))); import std.stdio; writeln(typeid(typeof(foo)).stringof); writeln(typeid(typeof(foo))); writeln(typeof(&main).stringof); writeln(typeid(typeof(main)).stringof); writeln(typeof(main).stringof); return 0; } ---- dmd -run main.d: & D17TypeInfo_PFAAyaZi6__initZ &D17TypeInfo_PFAAyaZi6__initZ &D17TypeInfo_PFAAyaZi6__initZ int()* int function(string[] args) &D16TypeInfo_FAAyaZi6__initZ int(string[] args) A) pragma(msg,typeid(typeof(foo))); adds an extra space compared to pragma(msg,typeid(typeof(foo)).stringof); B) can someone please explain the behavior of each stringification? Eg, writeln(typeid(typeof(foo))) discards input argument types (int()*), etc. |
Copyright © 1999-2021 by the D Language Foundation