DIP 50 - AST macros

Jacob Carlborg doob at me.com
Mon Nov 11 01:33:22 PST 2013


On 2013-11-11 10:02, bearophile wrote:

> Can't you do the same thing with functions similar (same API but
> different semantics) to std.algorithm ones that generate expression
> templates?
>
> auto person = persons.filter!(e => e.name == "John");

I have been thinking about that, a solution where "e" is a proxy that 
implements opDispatch and which returns a new proxy which overloads 
"==". The problem with this is that you cannot separately overload the 
equal and comparison operators. In D the all the comparisons operators 
are implement with the single overload, opCmp. You cannot know from 
inside of opCmp if it's the "<" or the ">" operator that is being 
called. Same problem with opEquals.

-- 
/Jacob Carlborg


More information about the Digitalmars-d mailing list