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
---
--