Debug help - opDispatch - unknown member function
Steven Schveighoffer
schveiguy at gmail.com
Tue Sep 9 20:56:19 UTC 2025
On Tuesday, 9 September 2025 at 20:08:06 UTC, monkyyy wrote:
> On Tuesday, 9 September 2025 at 19:17:11 UTC, Steven
> Schveighoffer wrote:
>>
>> In short `opDispatch` only is valid if it compiles. If it
>> doesn't compile, it's as if it doesn't exist.
>
> Yours still thinking declaratively, that cant be true. The best
> description of its behavior is that it discards errors.
>
> ```d
> import std;
> enum counter=cast(immutable(void)*)[0].ptr;
> auto getcount()=>(*(cast(int*)counter));
> auto count()=>(*(cast(int*)counter))++;
>
> struct foo{
> void opDispatch(string s)(){
> enum _=count();
> static assert(0);
> }
> }
> void bar(foo){}
> void foobar(foo){}
> unittest{
> foo().bar;
> foo().foobar;
> getcount.writeln;//2
> }
> ```
This calls the UFCS versions, because the `opDispatch` version
does not compile.
The other thing is just a bug.
-Steve
More information about the Digitalmars-d-learn
mailing list