Overloading opEquals(T)(T y)
spir
denis.spir at gmail.com
Tue Feb 8 07:52:35 PST 2011
On 02/08/2011 12:16 AM, bearophile wrote:
> Charles McAnany:
>
>> Hi, all. So I'm trying to make a BigRational struct, to get more comfortable
>> with D.
>
> I suggest to ask similar questions in the D.learn newsgroup.
>
>
>> bool opEquals(Tdummy = void)(BigRational y){
>> auto temp = this-y;
>> if (temp.numerator == 0)
>> return true;
>> return false;
>> }
>>
>> bool opEquals(T)(T y){
>> return this == BigRational(y);
>> }
>>
>> But this is an ambiguity error.
>
> One possible solution:
>
> bool opEquals(T)(T y) if (is(T == BigRational)) { ... }
> bool opEquals(T)(T y) if (!is(T == BigRational)) { ... }
>
>
> Another solution:
>
> bool opEquals(T)(T y) {
> static if (is(T == BigRational)) {
> // ...
> } else {
> // ...
> }
> }
>
> Bye,
> bearophile
I just thought at this alternative between a constraint and a static if a few
hours ago. In which case, and according to which reasoning, would one choose
one or the other? (I chose static if only for the very bad reason I can hardly
stand is().)
Denis
--
_________________
vita es estrany
spir.wikidot.com
More information about the Digitalmars-d
mailing list