On Wed, 30 Jun 2010 22:59:50 +0200, Tomek Sowinski <[email protected]> wrote: > > Dnia 30-06-2010 o 00:13:28 strtr <[email protected]> napisal(a): > > > == Quote from Steven Schveighoffer ([email protected])'s article > >> On Tue, 29 Jun 2010 17:59:37 -0400, strtr <[email protected]> wrote: > >> > What is the pretty way to do something like this? > >> > > >> > Class C > >> > { > >> > void makeNew() > >> > { > >> > new typeof(this); > >> > } > >> > } > >> As edited... > >> -Steve > > > > Whahaha! > > Thanks, I knew I was missing something here. > > Interestingly, this works even if makeNew is static (as factory methods > usually are). Don't know whether by design or by bug. If by the latter, > please don't fix it ;) > > > Tomek
Yep, it's intentional. It's explained in a rather hard-to-find spot: "There are three special cases: 1. typeof(this) will generate the type of what this would be in a non- static member function, even if not in a member function. 2. Analogously, typeof(super) will generate the type of what super would be in a non-static member function. 3. typeof(return) will, when inside a function scope, give the return type of that function." http://www.digitalmars.com/d/2.0/declaration.html#Typeof
