Thread overview
Bug?
Jun 14, 2022
JG
Jun 15, 2022
JG
June 14, 2022

Hi,

Is this a bug?

import std;

template test(alias f) {

    auto test(I)(I i) { return f(i); }
}

void main()
{
    alias t = test!(x=>x+1);
    1.t.writeln; //<--Doesn't compile
    1.test!(x=>x+1).writeln;
    t(1).writeln;
}
June 14, 2022

On 6/14/22 3:35 PM, JG wrote:

>

Hi,

Is this a bug?

import std;

template test(alias f) {

     auto test(I)(I i) { return f(i); }
}

void main()
{
     alias t = test!(x=>x+1);
     1.t.writeln; //<--Doesn't compile
     1.test!(x=>x+1).writeln;
     t(1).writeln;
}

Not a bug. Local symbols can't be used as UFCS functions.

-Steve

June 15, 2022

On Tuesday, 14 June 2022 at 19:49:39 UTC, Steven Schveighoffer wrote:

>

On 6/14/22 3:35 PM, JG wrote:

>

Hi,

Is this a bug?

import std;

template test(alias f) {

     auto test(I)(I i) { return f(i); }
}

void main()
{
     alias t = test!(x=>x+1);
     1.t.writeln; //<--Doesn't compile
     1.test!(x=>x+1).writeln;
     t(1).writeln;
}

Not a bug. Local symbols can't be used as UFCS functions.

-Steve

Thanks very much. I left wondering why that design decision was made.