Thread overview
Why doesn't this work when the function is a static method?
Jan 13
Jack
Jan 14
Jack
Jan 14
evilrat
Jan 14
Jack
January 13
works fine (this is defined at global scope, g and baa are same as static)

    int f(HWND hwnd, int n)
    {
        return n*10;
    }


    void baa()
    {
        HWND foo;
        writeln(foo.f(10));
    }


but if I wrap this within a class:

class Foo
{
    static int f(HWND hwnd, int n)
    {
        return n*10;
    }


    static void baa()
    {
        HWND foo;
        writeln(foo.f(10));
    }
}

I get the error:

Error: no property f for type void*
January 13
On Wednesday, 13 January 2021 at 17:14:04 UTC, Jack wrote:
> but if I wrap this within a class:
>
> class Foo
> {
>     static int f(HWND hwnd, int n)
>     {
>         return n*10;
>     }
>
>
>     static void baa()
>     {
>         HWND foo;
>         writeln(foo.f(10));
>     }
> }
>
> I get the error:
>
> Error: no property f for type void*

Member functions (including static ones) can't be called with UFCS.
January 14
On Wednesday, 13 January 2021 at 17:21:23 UTC, Paul Backus wrote:
> On Wednesday, 13 January 2021 at 17:14:04 UTC, Jack wrote:
>> but if I wrap this within a class:
>>
>> class Foo
>> {
>>     static int f(HWND hwnd, int n)
>>     {
>>         return n*10;
>>     }
>>
>>
>>     static void baa()
>>     {
>>         HWND foo;
>>         writeln(foo.f(10));
>>     }
>> }
>>
>> I get the error:
>>
>> Error: no property f for type void*
>
> Member functions (including static ones) can't be called with UFCS.

Thanks
 is this documented somewhere? Is this going to change?
January 14
On Thursday, 14 January 2021 at 05:44:43 UTC, Jack wrote:
> On Wednesday, 13 January 2021 at 17:21:23 UTC, Paul Backus wrote:
>>
>> Member functions (including static ones) can't be called with UFCS.

>  is this documented somewhere? Is this going to change?

It will stay as is.
It is somewhat vaguely described in p.7 under UFCS section in functions

https://dlang.org/spec/function.html#pseudo-member
January 14
On Thursday, 14 January 2021 at 09:13:27 UTC, evilrat wrote:
> On Thursday, 14 January 2021 at 05:44:43 UTC, Jack wrote:
>> On Wednesday, 13 January 2021 at 17:21:23 UTC, Paul Backus wrote:
>>>
>>> Member functions (including static ones) can't be called with UFCS.
>
>>  is this documented somewhere? Is this going to change?
>
> It will stay as is.
> It is somewhat vaguely described in p.7 under UFCS section in functions
>
> https://dlang.org/spec/function.html#pseudo-member

I see, thanks
January 14
On Thursday, 14 January 2021 at 15:20:54 UTC, Jack wrote:
> On Thursday, 14 January 2021 at 09:13:27 UTC, evilrat wrote:
>> On Thursday, 14 January 2021 at 05:44:43 UTC, Jack wrote:
>>> On Wednesday, 13 January 2021 at 17:21:23 UTC, Paul Backus wrote:
>>>>
>>>> Member functions (including static ones) can't be called with UFCS.
>>
>>>  is this documented somewhere? Is this going to change?
>>
>> It will stay as is.
>> It is somewhat vaguely described in p.7 under UFCS section in functions
>>
>> https://dlang.org/spec/function.html#pseudo-member
>
> I see, thanks

If it's really important you can make a module-level alias to the static method.

https://run.dlang.io/is/4IFsjr