https://issues.dlang.org/show_bug.cgi?id=19749 --- Comment #6 from anonymous4 <dfj1esp02 at sneakemail.com> --- If you want to preserve types, use inference: struct S(T) { pragma(msg, T); } auto make(T)(T s) { return S!T(); } pragma(msg, typeof(make("hi"))); prints --- string S!string --- --