SeeWebsiteForEmail at erdani.org
Fri Dec 26 20:07:20 PST 2008
The Anh Tran wrote:
> aarti_pl wrote:
>> Andrei Alexandrescu pisze:
>> > We're trying to make that work. D is due for an operator overhaul.
>> > Andrei
>> Is there any chance that we get possibility to overload "raw
>> operators", like in C++? I think that they may coexist with currently
>> defined operator overloads with simple semantic rules, which will not
>> allow them to work together at the same time.
>> Marcin Kuszczak
> Me also have a dream :D
> <Daydream mode>
> class Foo
> auto op(++)(); // bar++
> auto op(++)(int); // ++bar
Hey, wasn't the implementation of the postincrement operator through an
overload a rather untasty hack?
> op(cast)(uint); // cast(uint)bar // opCast
> auto op(())(int, float); // Foo(123, 123.456) // opCall
> auto op(+)(Foo rhs); // bar1 + bar2
> auto op(+=)(int); // bar += 1234;
> auto op(.)(); // bar.xyz // opDot
> Foo op()(int, char, float); // bar['x'][123.456]
> auto op([..])(); // i = bar2 // opSlide
> auto op([..])(int, int); // bar[1..10]
> auto op([..]=)(float); // bar = 12.3 //opSlideAssign
> auto op([..]=)(int, int, float); // bar[1..3] = 123.4
Aside for a minor change in notation, there's no improvement. We're
looking for much more broad improvements, such as offering the ability
to overload several operators with only one function.
More information about the Digitalmars-d