То есть если нигде у членов класса и ниже нет noexcept(false) на деструкторе, то и деструктор самого объекта помечается как noexcept, пока явно не отменишь это спецификатором
И следом вопрос, что произойдет если помеченная как noexcept функция все же имеет внутри себя вызов какого нибудь new который может бросить исключение?
Встречный вопрос. Ассемблер знаешь? Как устроен стек, вызов функций, ABI call Convention хотя бы для System V? Как линкер работает?
Какие регистры как используются, как вызов функций и возврат организован?
Аргументы передаются либо через push методом вставки в стек (причем аргументы вставляются в обратном порядке), затем происходит вызов call метода (аргументы не всегда передаются методом push), куда возвращаться определяет регистр ESP
И следом вопрос, что произойдет если помеченная как noexcept функция все же имеет внутри себя вызов какого нибудь new который может бросить исключение?
И следом вопрос, что произойдет если помеченная как noexcept функция все же имеет внутри себя вызов какого нибудь new который может бросить исключение?
Краткий ответ: при stack unwinding никто деструкторы во фрейме noexcept функции не вызовет, ибо этой секции там просто нет