On 12/03/15 16:33, Steven Schveighoffer via Digitalmars-d wrote: > auto ref logCall(alias f, Args...)(auto ref Args args) { > auto ref printResult(T)(auto ref T t) > { > writeln(t); > return t; > } > return printResult(f(args)) > } > > logCall!foo(true);
Which will happily accept: bool foo(ref bool a) { return a=false; } And, yes, it can be dealt with via a bit of introspection, but nobody will bother in practice (consider that 'f' may be overloaded). So it doesn't really work for non-trivial or generic code. artur