Przejdź do głównej zawartości

std::pmr::polymorphic_allocator<T>::allocate

Since C++20
[[nodiscard]] T* allocate( std::size_t n );
Since C++17, Until C++20
T* allocate( std::size_t n );

Allocates storage for n objects of type T using the underlying memory resource.
Equivalent to return static_cast<T*>(resource()->allocate(n * sizeof(T), alignof(T)));.

Parameters

n - the number of objects to allocate storage for

Return value

A pointer to the allocated storage.

Exceptions

Throws std::bad_array_new_length if n > std::numeric_limits<std::size_t>::max() / sizeof(T);
may also throw any exceptions thrown by the call to resource()->allocate.

Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DRApplied toBehavior as publishedCorrect behavior
LWG 3038C++17allocate might allocate storage of wrong sizethrows length_error instead
LWG 3237C++17the exception thrown by allocate was inconsistent with std::allocator::allocatemade consistent

std::pmr::polymorphic_allocator<T>::allocate

Since C++20
[[nodiscard]] T* allocate( std::size_t n );
Since C++17, Until C++20
T* allocate( std::size_t n );

Allocates storage for n objects of type T using the underlying memory resource.
Equivalent to return static_cast<T*>(resource()->allocate(n * sizeof(T), alignof(T)));.

Parameters

n - the number of objects to allocate storage for

Return value

A pointer to the allocated storage.

Exceptions

Throws std::bad_array_new_length if n > std::numeric_limits<std::size_t>::max() / sizeof(T);
may also throw any exceptions thrown by the call to resource()->allocate.

Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DRApplied toBehavior as publishedCorrect behavior
LWG 3038C++17allocate might allocate storage of wrong sizethrows length_error instead
LWG 3237C++17the exception thrown by allocate was inconsistent with std::allocator::allocatemade consistent