The Final(ize) Challenge

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Mon May 18 09:12:40 PDT 2009


Ok, now with the advent (or rediscovery) of allMembers which I had no 
idea existed, we're ready to start some serious butt-kick reflection 
facilities.

For starters, I'd like to present you with the following challenge. 
Given any class C, e.g.:

class C
{
     void foo(int) { ... }
     int bar(string) { ... }
}

define a template class Finalize(T) such that Finalize!(C) is the same 
as the following hand-written class:

final class FinalizeC : C
{
     final void foo(int a) { return super.foo(a); }
     final int bar(string a) { return super.bar(a); }
}

Finalize is cool when you need some functionality from an exact class 
and you don't want to pay indirect calls throughout. All calls through 
Finalize!(C)'s methods will resolve to static calls.


Have at it!

Andrei



More information about the Digitalmars-d mailing list