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