Извините, но, на мой взгляд, вы НЕ должны этого делать и возвращаться к старому новому поведению.
Это потому, что вы все равно не можете избежать исключений.
Почему?
Подумайте о новом вызове, который должен распределять класс с помощью конструктора, вызывающего некоторый код инициализации, который должен создать что-то временное, динамическое. Увы, у тебя будет исключение. Неважно, используете ли вы std :: nothrow. Это только один сценарий среди их числа.
В книге Скотта Мейерса Эффективный C ++ это подробно обсуждалось, насколько я помню. Но я не уверен, что все дела рассмотрены (но я предлагаю достаточно их).