The destructor will not be called because the object is foonot fully constructed until the constructor completes execution (note that this means that you drop the constructor that is delegated to another constructor, then the destructor will be called). Throwing from the constructor is not performed undefined.
source
share