18609 {
18610 AllocatorType<T> alloc;
18611 using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
18612 auto deleter = [&](T * obj)
18613 {
18614 AllocatorTraits::deallocate(alloc, obj, 1);
18615 };
18616 std::unique_ptr<T, decltype(deleter)> obj(AllocatorTraits::allocate(alloc, 1), deleter);
18617 AllocatorTraits::construct(alloc, obj.get(), std::forward<Args>(args)...);
18618 JSON_ASSERT(obj != nullptr);
18619 return obj.release();
18620 }