user defined implicit casts

Tristam MacDonald swiftcoder at gmail.com
Tue Jul 31 07:19:51 PDT 2007


It would be nice if this could be generalised to functions, rather than just operator overloads. Then we could define member functions for specific template instantiations without having to specialise the whole template, or clog the body with static ifs.

Reiner Pope Wrote:
> Jarrett Billingsley wrote:
> > "Ender KaShae" <astrothayne at gmail.ckom> wrote in message 
> > news:f8m0k6$2oo9$1 at digitalmars.com...
> >> c++ has member, global, and static operator overloads it is up to the 
> >> programmer to choose how to implement it, I think it would be nice if D 
> >> had a similar mechanizm.
> > 
> > Can you come up with something more solid than "this is how C++ does it?" 
> > Can you explain what functionality global and static operator overloads 
> > provide that member operator overloads cannot? 
> > 
> > 
> Non-member operator overloads are useful for the same reason that 
> non-member functions are useful: writing functions that operate on a 
> type, but don't belong within that type.
> 
> I can think of one example where global operator overloads make sense:
> 
> // stores a list of T, with opIndex, opCat, etc
> class List(T) { ... }
> 
> In this case it might be reasonable to define a function which does a 
> elementwise add of two List!(int)s to produce a third:
> 
> List!(int) opAdd(List!(int) a, List!(int) b) { ... }
> 
> But this operator clearly doesn't belong in the List class, as in the 
> general case, you can't add two lists together.
> 
> 
>    -- Reiner




More information about the Digitalmars-d mailing list