UFCS and constructors

Timon Gehr timon.gehr at gmx.ch
Tue Jul 2 14:38:25 PDT 2013


On 07/02/2013 10:16 PM, Maxim Fomin wrote:
> On Tuesday, 2 July 2013 at 19:47:07 UTC, Timon Gehr wrote:
>>
>> Analogies are always broken, but the rest of the post reads to me
>> roughly like:
>>
>> "Dogs are not pets, and should not be treated as such.
>> They are fundamentally different from pets.
>>
>> Also, there are no other pets that bark, so it's incredibly bizarre as
>> well as inconsistent with the rest of the notion of a 'pet' to have a
>> pet dog.
>>
>> - Tmion M Gehr
>> "
>>
>
> class A
> {
>    this() {}
>    void foo(){}
> }
>
> A a = new A; // calls ctor, not foo
>
> Of course constructors are special because not any function is called
> upon object construction.

(We are discussing struct constructors.)

Of course. I fully agree. Obviously there is a reason why those 
functions are called constructors.

But one could now extend on the original argument, and say that eg. all 
the overloading rules should be different for constructors, because they 
are fundamentally different and should under no circumstances be treated 
like 'normal functions'. Do you see what the point is? This is not a 
valid way of justifying a breaking language change.

> Same logic

Logics that can prove some equivalent statements are not necessarily 
equivalent. (In particular, it does not rule out inconsistency of one of 
them.)

> was made when ability to overload
> some operators was blocked. All operators are, well, operators but you
> cannot overload all of them. It appears that sometimes it does make
> sense to restrict operation on some particular elements of the set and
> sometimes not.
> ...

Such restrictions need to be justified. The justification should make 
(at least some) sense. There is no point in heuristically designing 
language features from observations about other language features 
without applying insight.

(Anyway, I do not think that overloading of a fixed set of primitive 
operators using specially named member functions is a good mechanism for 
infix notation.)




More information about the Digitalmars-d mailing list