"is" operator for structures?

Gor Gyolchanyan gor.f.gyolchanyan at gmail.com
Wed May 9 09:21:05 PDT 2012


If "is" was overloadable, one could make a legitimate reference types
via structs. The opAssign would change the reference, opEquals would
call the opEquals of the referred object, opBinary(string op : `is`)
would compare the references... Just like classes.

On Wed, May 9, 2012 at 8:13 PM, Steven Schveighoffer
<schveiguy at yahoo.com> wrote:
> On Wed, 09 May 2012 10:13:01 -0400, bearophile <bearophileHUGS at lycos.com>
> wrote:
>
>> Gor Gyolchanyan:
>>
>>> Because the opBinary [...]
>>
>>
>> Thank for your answer, but I don't carte of "why" the D compiler accepts
>> that. I only care about the D compiler statically refusing that.
>
>
> This also works too:
>
> int opBinary(string s: "booya!")(...)
>
> or this too:
>
> int opBinry(string s: "+")(...)
>
> opBinary is a valid symbol, and as a valid symbol, it is a valid function,
> no matter whether the compiler calls it in a special way.
>
> I don't think it is a terrible thing, and I think statically disallowing
> that would be a worse idea.
>
> And to answer the OP, 'is' is special, it signals a bitwise compare, no
> matter what the contents of the type being compared.
>
> That being said, I understand why you want to do that.  I don't see any way
> around it.
>
> -Steve



-- 
Bye,
Gor Gyolchanyan.


More information about the Digitalmars-d mailing list