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