Хорошо известно, что при вызове конструктора все полностью построенные под-объекты будут уничтожены в обратном порядке, включая данные членов и все типы базовых классов. Однако деструктор не вызывается для не-делегирующих конструкторов. Для конструктора делегирования объект был создан при вводе тела конструктора, но конструкция продолжается несколько. Поэтому возникает вопрос, вызывается ли деструктор класса, если делегирующий конструктор выдает исключение из своего тела?
class X
{
public:
X();
X(int) : X() { throw std::exception(); } // is ~X() implicitely called?
~X();
};