Is this actually supposed to be legal?
David Nadlinger
see at klickverbot.at
Tue Jul 17 14:39:12 PDT 2012
On Tuesday, 17 July 2012 at 20:50:41 UTC, Jonathan M Davis wrote:
> The problem is that if you have static ifs and the like in the
> base class
> which depends on compile time reflection of the derived class,
> you effectively
> have a recursive template definition. e.g.
>
> class MyBase(T)
> {
> static if(is(tyepeof(T.func())))
> {
> int func() { return 42; }
> }
> }
I don't see how this would be any different than, say, using
__traits(derivedMembers, typeof(this)) in a struct/class
declaration.
That being said, I have never used CRTP in D so far, since
template mixins seem to be the better choice in almost all
situations.
David
More information about the Digitalmars-d-learn
mailing list