UFCS and constructors
Artur Skawina
art.08.09 at gmail.com
Wed Jul 3 08:22:54 PDT 2013
On 07/03/13 17:11, John Colvin wrote:
> On Wednesday, 3 July 2013 at 15:05:29 UTC, Timon Gehr wrote:
>> On 07/03/2013 04:53 PM, John Colvin wrote:
>>> On Wednesday, 3 July 2013 at 03:22:16 UTC, Jonathan M Davis wrote:
>>>> That is _very_ broken IMHO. It makes no sense for parens to be
>>>> optional with
>>>> opCall. The whole point of opCall is to overload the parens!
>>>
>>> So much about optional parenthesis is broken. I really wish things
>>> weren't going that way, it obfusticates the difference between a
>>> callable and the result in a really nasty way, and it doesn't work for
>>> function pointers (nor does UFCS unfortunately).
>>
>> Yes, UFCS works.
>
> struct A {}
>
> void foo(A a) {}
>
> void main()
> {
> A a;
> auto foo_ptr = &foo;
> a.foo_ptr(); //Error: undefined identifier 'foo_ptr'
> a.foo_ptr; //Error: no property 'foo_ptr' for type 'A'
> }
Move the "auto foo_ptr = &foo;" line outside of `main` and it'll work.
UFCS has several problems that need to be fixed and this is just one of
them, but it isn't function-pointer specific.
artur
More information about the Digitalmars-d
mailing list