The only pattern I can think of is to construct via a free function. The free function would call the real (basically empty) constructor, and then fill it in via other member functions or by directly accessing the data (via friendship). This free function would be able to allocate memory, etc, and return error flags.<p>You could even make the real constructor private, which would prevent inadvertently creating an object with an invalid state.<p>(Could also be done with a static member function, I suppose)