Эти версии new и delete безопасны от исключений?Любые возможные подводные камни?
Предположим, что custom_allocator_type совместим с STL.Также предположим, что конструктор распределителя не имеет побочных эффектов и все экземпляры эквивалентны.
Заранее благодарим за ваш ввод!
template <typename T>
inline T * customized_new(const T& t)
{
customized_allocator_type<T> alloc;
T * ptr = alloc.allocate(1);
if (ptr==0)
throw std::bad_alloc();
try {
alloc.construct(ptr, t);
} catch (...) {
alloc.deallocate(ptr, 1);
throw;
}
return ptr;
}
template <typename T>
inline void customized_delete(T * ptr)
{
if (ptr==0)
return;
customized_allocator_type<T> alloc;
alloc.destroy(ptr);
alloc.deallocate(ptr, 1);
};