Template error with gdc-10 but not with latest dmd and ldc

Per Nordlöw per.nordlow at gmail.com
Sun Jul 26 19:04:11 UTC 2020

The code example

long add_long_n0(alias T=void)(long x) @safe pure nothrow @nogc { 
return x + 0; }

int main(string[] args)
     long long_sum = 0;
     long_sum += add_long_n0!(void)(cast(long)0);
     return cast(int)long_sum;

compiles without errors with dmd and ldc. But with gdc-10 as

     gdc -c linear_t.d

it errors as

linear_t.d:6:17: error: template instance add_long_n0!() does not 
match template declaration add_long_n0(alias T = void)(long x)
     6 |     long_sum += add_long_n0!()(cast(long)0);
       |                 ^

Why can't LDC handle such a trivial template example?

More information about the Digitalmars-d-learn mailing list