これらのバージョンのnewとdeleteは例外セーフですか? 考えられる落とし穴はありますか?
Customized_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);
};