On Sat, 28 Nov 2009 18:36:07 -0500, Walter Bright <newshou...@digitalmars.com> wrote:

And here it is (called opDispatch, Michel Fortin's suggestion):

http://www.dsource.org/projects/dmd/changeset?new=trunk%2f...@268&old=trunk%2f...@267

I have a few questions:

1. How should the compiler restrict opDispatch's string argument? i.e. if I implement opDispatch, I'm normally expecting the string to be a symbol, but one can directly call opDispatch with any string (I can see clever usages which compile but for instance circumvent const or something), forcing me to always constrain the string argument, i.e. always have isValidSymbol(s) in my constraints. Should the compiler restrict the string to always being a valid symbol name (or operator, see question 2)?

2. Can we cover templated operators with opDispatch? I can envision something like this:

opDispatch(string s)(int rhs) if(s == "+") {...}

I'm still hesitant on operators only being definable through templates, since it makes for very ugly and complex function signatures, regardless of whether they are virtual or not. I would be all for it if you can make shortcuts like:

operator("+")(int rhs)

hm.. that gives me an idea.  new post...

-Steve

Reply via email to