I noticed that it is not recommended for use by design pattern books. I write games and have always used this design due to the number of objects constantly created / destroyed because it is faster than using new - delete. Is there a good reason why people don't recommend this design? None of the reasons provided in the wikipedia article seem compelling enough.
I think it is because in C++, all of the containers allow you to write your own allocator (not that this is an easy task, mind you) which can improve speed by eliminating the need to call the default operator new which does the underlying malloc().
Object pools don't help with initialization since, as the article says, either the previous user must "reset" the object state to some sane, known default, or the next user must do so. This is, IMHO, equivalent performance-wise to running the body of the constructor. So all it helps with initialization is in setting up the vtable, if the object requires one.