Thread overview
Why doesn't this work when the function is a static method?
Jan 13, 2021
Jack
Jan 13, 2021
Paul Backus
Jan 14, 2021
Jack
Jan 14, 2021
evilrat
Jan 14, 2021
Jack
Jan 14, 2021
Anonymouse
January 13, 2021
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, 2021
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, 2021
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, 2021
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, 2021
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, 2021
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