On Wed, Feb 15, 2017 at 10:58:42PM +0000, ag0aep6g via Digitalmars-d-learn wrote: > On Wednesday, 15 February 2017 at 22:34:22 UTC, H. S. Teoh wrote: > > auto debugPrint(alias fun, A...)(A args) { > > writefln("%s(%(%s, %))", __traits(identifier, fun), [args]); > > return fun(args); > > } > > > > string arg = "hello"; > > string myCall = debugPrint!someFunction(1, arg); > > `[args]` doesn't work when the tuple elements don't have a common > type.
Very good point. > But you can pass `args` as is to writefln and generate the format > string accordingly: > > ---- > import std.range: repeat; > import std.string: join; > > immutable string argsfmt = "%s".repeat(args.length).join(", "); > writefln("%s(" ~ argsfmt ~ ")", __traits(identifier, fun), args); > ---- Excellent idea! T -- Life is complex. It consists of real and imaginary parts. -- YHL