Assume the following code:
Foo* p = new (std::nothrow) Foo();
'p' will equal 0 if we are out of heap memory.
What happens if we are NOT out of memory but Foo's constructor throws? Will that exception be "masked" by the nothrow version of 'new' and 'p' set to 0?... Or will the exception thrown from Foo's constructor make it out of the function?