On Saturday, 16 November 2013 at 22:57:35 UTC, Namespace wrote:
Hi.
Is it possible to write something like that?
----
void error(Args...)(string msg, Args args, string file = __FILE__, size_t line = __LINE__) { ... }
----
?
Currently not, but how could it be done? I wont like to write:
----
error(format(msg, args));
----

Thanks in advance. :)

It is always surprising how quickly one has found its own solution, after you have posted here... :)

----
import std.stdio;
import std.string : format;

template error(string file = __FILE__, size_t line = __LINE__, Args...) {
        void error(string msg, Args args) {
                static if (args.length != 0)
                        msg = .format(msg, args);
                
                writeln(.format(msg ~ ". In file %s on line %d.", file, line));
        }
}

void main()
{
        error("hallo");
        error("Hallo %s.", "du da");
}
----

Reply via email to