On 1/2/19 12:38 PM, IM wrote:

2- Yesterday I was experimenting with something and I wrote something like the following:

struct MyType {

void doSomeWork(ref MyType o) {

auto t = MyType(...);

t.doSomeWork(); // <-- failed to compile.

Why did the above UFCS call fail to compile? I had to do doSomeWork(t) instead.

With those ... I have to guess.

There are 2 possibilities.

Possibility 1: there is a method named 'doSomeWork' which takes at least one parameter. This overrides the UFCS function (member functions always win over UFCS).

Possibility 2: All this is actually inside a function or unittest. Nested functions cannot participate in UFCS.

Of course, these are guesses. But given the very scant code above, I'm not sure I could offer any other suggestions. If neither of those is the case, I'd need a working example.


Reply via email to