MSDN says (in http://msdn.microsoft.com/en-us/library/3c594ae3.aspx ), that "this" cannot be used in the constructor's initializer list, because "you've passed a pointer to an unconstructed object to another constructor". It is ok.
But consider my example below.
The compiler generates (two) C4355 warnings, and this is wrong, because "this" here refers only to the base class subobject "Base", because X::X() takes a "Base*". And the "Base" subobject is fully constructed.
Not even an explicit cast prevents this warning, and I have no idea, how to prevent this warning in the code -- given that X has this constructor and Derived has a data member of type X.