July 17, 2012
http://en.wikipedia.org/wiki/Curiously_recurring_template_pattern

On 7/16/2012 10:24 PM, Jonathan M Davis wrote:
> This code strikes me as being a bug:
> 
> --------
> class MyBase(T)
> {}
> 
> class MySubA : MyBase!MySubA
> {}
> 
> class MySubB : MyBase!MySubB
> {}
> 
> void main()
> {}
> --------
> 
> but it compiles just fine. However, given the fact that MySubA isn't even properly defined until its base class has been defined, I don't see how it could possibly _not_ be a bug for the base class to be templatized on it. You could get some really weird behavior if you use compile time reflection on the derived class in the base class definition.
> 
> Does anyone know if this is actually supposed to work? Or is it in fact a bug like I think it is?
> 
> - Jonathan M Davis
>