Ah, I hadn't realize that this does solve the "point of instantiation"
expansion with __FILE__ and __LINE__ <g>.

But just from trying to do this little thing, it's pretty clear to me
that "my head asplode" if I have to write too much of this kinda thing
without a better string literal syntax geared to this.
Something like:
const char[] Trace =
"""
writefln("%s(%s): (msg)", __FILE__, __LINE__);
"""
;
Would be much less likely to make me want to scratch my eyes out.

Yes, a better string literal syntax will probably have to be devised.

Also a little buglet --
You can call the above like
mixin(Trace!("a_function"));
or
mixin(Trace!());
But this doesn't work:
mixin(Trace);