On 07/31/2018 09:17 AM, Shachar Shemesh wrote:
I'm trying to figure out what's the signature of the built-in assert. It does not seem that I can define a similar function myself.

Looks like you can do it with a "lazy variadic function" [1], but it's not pretty:

----
alias Dg = string delegate() @nogc nothrow;

void myAssert(bool cond, Dg[1] msg_dg ...) @nogc nothrow
{
    import core.stdc.stdio;
    if (!cond)
    {
        string msg = msg_dg[0]();
        printf("%*s\n", msg.length, msg.ptr);
    }
}
----

[1] https://dlang.org/spec/function.html#lazy_variadic_functions

Reply via email to