table of contents
        
      
      
    | std::allocator_traits::allocate(3) | C++ Standard Libary | std::allocator_traits::allocate(3) | 
NAME¶
std::allocator_traits::allocate - std::allocator_traits::allocate
Synopsis¶
 Defined in header <memory>
  
   static pointer allocate( Alloc& a, size_type n (since C++11)
  
   ); (until C++20)
  
   [[nodiscard]] static constexpr pointer allocate( (since C++20)
  
   Alloc& a, size_type n );
  
   static pointer allocate( Alloc& a, size_type n, (1) (since
    C++11)
  
   const_void_pointer hint ); (until C++20)
  
   [[nodiscard]] static constexpr pointer allocate( (2)
  
   Alloc& a, size_type n, (since C++20)
  
   const_void_pointer hint );
  
   Uses the allocator a to allocate n*sizeof(Alloc::value_type) bytes of
    uninitialized
  
   storage. An array of type Alloc::value_type[n] is created in the storage, but
    none
  
   of its elements are constructed.
  
   1) Calls a.allocate(n)
  
   2) Additionally passes memory locality hint hint. Calls a.allocate(n, hint)
    if
  
   possible. If not possible (e.g. a has no two-argument member function
    allocate()),
  
   calls a.allocate(n)
Parameters¶
 a - allocator to use
  
   n - the number of objects to allocate storage for
  
   hint - pointer to a nearby memory location
Return value¶
The pointer returned by the call to a.allocate(n)
Notes¶
 Alloc::allocate was not required to create array object until
    P0593R6, which made
  
   using non-default allocator for std::vector and some other containers not
    actually
  
   well-defined according to the core language specification.
  
   After calling allocate and before construction of elements, pointer
    arithmetic of
  
   Alloc::value_type* is well-defined within the allocated array, but the
    behavior is
  
   undefined if elements are accessed.
See also¶
 allocate allocates uninitialized storage
  
   (public member function of std::allocator<T>)
| 2022.07.31 | http://cppreference.com |