On Friday, 1 January 2016 at 10:40:59 UTC, Kapps wrote:
Someone else can explain better / more correctly than me, but I
believe the issue lies with opCmp and opEquals. You can make
expressions like p.Name.equals("James") work (I believe using
opDispatch), but because all you have is opEquals, you can't
know if the user put in 'p.Name == "James"` or `p.Name !=
"James"`, as they both simply call opEquals. In order to do
that, you would need things like opLessThan, opEquals,
opNotEquals, opGreaterThan, etc, which would (with improper use
or bugs) cause other issues, like a < b && a > b and a == b &&
a != b to be true, or a == b || a != b to be false.
I'm also not certain how you could implement `p => p.Name ==
"James" || p.Name == "Bob"`, but there might be a way? I think
this is the gist of it, but I'm likely wrong on some aspects of
this, so it would be good if someone else clarified..
That's exactly the problem. See an issue reported [1] and a
related thread [2]. AST macros could solve the problem as well
[3] (and many other problems).
[1] https://issues.dlang.org/show_bug.cgi?id=14593
[2] http://forum.dlang.org/thread/msvapl$2rmn$1...@digitalmars.com
[3] http://wiki.dlang.org/DIP50
--
/Jacob Carlborg