Еще в древние времена С++98 вместо явного вызова delete используется деструктор , который вызывает delete внутри.
Новый C++ дает возможность отказаться и от 'new' за счет функций вида
make_***.
Преимущество нет проблем с утечками памяти при исключениях.
Т.е. эти конструкции нужны на более низком уровне, только чтобы написать обертки.
Согласны ли вы, что 'new' в обычном коде тоже устарел ?