On Friday, 13 June 2014 at 03:52:00 UTC, Andrei Alexandrescu
wrote:
On 6/12/14, 8:49 PM, Nick Sabalausky wrote:
On 6/12/2014 11:13 PM, Andrei Alexandrescu wrote:
On 6/12/14, 7:26 PM, Daniel Murphy wrote:
It
1. allows escaping final, which we can't do without it or an
equivalent
2. does exactly what everybody expects
3. is already implemented
4. looks much nicer than your proposal
Why not just leave it in? I'm already using it, and it makes
extern(C++) classes MUCH more readable (ie DDMD)
Please no new keyword for what can be done already. It's not
proportional response.
AFAIK, escaping final *can't* be done.
It can be worked around. -- Andrei
Yes, it can be done. I am able to do something like this:
class A
{
mixin(Virtual!A);
final:
@Overridable()
void method(this M)(int x) {
writeln("virtual A");
}
}
class B : A
{
mixin(Virtual!B);
final:
@Override() void method(this M)(int x) {
writeln("virtual B");
}
}
class C : B
{
final:
override void method(int x) {
writeln("virtual C");
}
}
void main(string[] args)
{
A a = new A;
a.method(7); //print virtual A
a = new B;
a.method(7);print virtual B
a = new C;
a.method(7); print virtual C
stdin.readln;
}