struct opCmp?
Nick Sabalausky
a at a.a
Thu May 14 14:56:58 PDT 2009
Before I go to post a bug report I want to make sure I'm not missing
something:
On http://www.digitalmars.com/d/1.0/struct.html it says that structs support
operator overloading. But I can't seem get opCmp to execute on a struct
without calling it explicitly:
-------------------------------
import tango.io.Stdout;
struct Foo
{
int i;
int opCmp(Foo f)
{
Stdout.formatln("In opCmp");
return i-f.i;
}
}
Foo getFoo()
{
return Foo(1);
}
void main()
{
bool result;
Stdout.formatln("{}", result);
result = (Foo(1) == Foo(1));
Stdout.formatln("{}", result);
result = (getFoo() == getFoo());
Stdout.formatln("{}", result);
Foo f1 = Foo(1);
Foo f2 = Foo(1);
result = (f1 == f2);
Stdout.formatln("{}", result);
result = (f1.opCmp(f2)) == 0;
Stdout.formatln("{}", result);
}
-------------------------------
Output:
-------------------------------
false
true
true
true
In opCmp
true
-------------------------------
(FWIW, this is on WinXP 32-bit, DMD 1.043)
Is opCmp completely broken on structs or am I missing something?
More information about the Digitalmars-d-learn
mailing list