с++: безопасное удаление указателей с последующим их обнулением

Подскажите в новых стандартах C++ не появились ли удаления указателей в 1 строчку, чтобы не писать код:

if (ptr != nullptr)
{
    delete ptr;
    ptr = nullptr;
}

или (если выделялся массив)

if (ptr != nullptr)
{
    delete [] ptr;
    ptr = nullptr;
}

может есть что-нибудь типа stl::one_line_delete(ptr) ?


Ответы (1 шт):

Автор решения: Harry

Ну, если хотите

template<typename T>
void destroy(T*& p)
{
    delete p;
    p = nullptr;
}

Не вижу особой необходимости, не всегда же удаляется по переменной, но...

Кстати, проверка if (ptr != nullptr) избыточна.

→ Ссылка