But the point is that he's misunderstanding, the guideline he posted was the following:
> Avoid doing complex initialization in constructors (in particular, initialization that can fail or that requires virtual method calls). ... Constructors should never call virtual functions or attempt to raise non-fatal failures. If your object requires non-trivial initialization, consider using a factory function or Init() method
consider using is a far cry from *required to use. It also explicitly spelled out the situations in which you should consider using something like a factory method.
- When you need to call virtual methods since a factory method implies the full construction of the object
- When you want to indicate non-fatal failures since a factory method implies being able to do so without exceptions.
If your code doesn't require virtual methods and doesn't need to indicate non-fatal failures, then there is nothing in that particular guideline that's relevant to you.
It's a sensible guideline, especially in an environment where you need to be able to avoid using exceptions.
He also took issue with the following:
> Provide a copy constructor and assignment operator only when necessary. Otherwise, disable them with DISALLOW_COPY_AND_ASSIGN.
The entire point of this guideline is to disallow the compiler from doing anymore magic than is completely necessary. Especially surrounding things like construction and operator overloading, C++ does a lot of 'magic' to keep the user syntax relatively clean, but it can also make the code misleading/hard to understand.
The point is that both guidelines are actually sensible, and nothing in them explicitly prevents you from doing anything the author complained about. The idea of "only when necessary" is not even close to "always" or "never".
I didn't read the entire thing, but a lot of the complaints appeared to be related to his misunderstanding the intent, or taking it to the extreme.