Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::alloca...te_at_least(3)  C++ Standard Libary std::alloca...te_at_least(3)

NAME
       std::allocator_traits::allocate_at_least	- std::allocator_traits::allo-
       cate_at_least

Synopsis
	  [[nodiscard]]	static constexpr std::allocation_result<pointer,
	  size_type>
       (since C++23)
	      allocate_at_least( Alloc&	a, size_type n );

	  allocate_at_least  calls  a.allocate_at_least(n) and returns its re-
       sult if the call	is
	  well-formed, otherwise, it is	equivalent to  return  {a.allocate(n),
       n};.

	  allocator_at_least  tries  to	 allocate  a  storage  for  at least n
       value_type objects,
	  and provides a fallback mechanism that allocates a storage for exact
       n objects.

Parameters
	  a - an allocator used	for allocating storage
	  n - the lower	bound of number	of objects to allocate storage for

Return value
	  a.allocate_at_least(n) if it is well-formed.

	  Otherwise, std::allocation_result<pointer, size_type>{a.allocate(n),
       n}.

Exceptions
	  Throws what and when the selected allocation function	throws.

Notes
	  The allocate_at_least	member function	of Allocator types are	mainly
       provided	for
	  contiguous  containers,  e.g.	 std::vector and std::basic_string, in
       order to	reduce
	  reallocation by making their capacity	match the  actually  allocated
       size when
	  possible.  Because  allocate_at_least	provides a fallback mechanism,
       it can be
	  directly used	where appropriate.

	  Given	an allocator object a of type Alloc,  let  result  denote  the
       value returned from
	  std::allocator_traits<Alloc>::allocate_at_least(a,  n),  the storage
       should be
	  deallocated by a.deallocate(result.ptr, m) (typically	called via
	  std::allocator_traits<Alloc>::deallocate(a, result.ptr, m)) in order
       to avoid	memory
	  leak.

	  The argument m used in deallocation must be not less than n and  not
       greater than
	  result.count,	 otherwise,  the behavior is undefined.	Note that n is
       always equal to
	  result.count if the allocator	does  not  provide  allocate_at_least,
       which means that	m
	  is required to be equal to n.

	      Feature-test macro       Value	Std	     Feature
	  __cpp_lib_allocate_at_least 202302L (C++23) allocate_at_least	etc.

Example
	   This	section	is incomplete
	   Reason: no example

See also
	  allocate_at_least  allocates uninitialized storage at	least as large
       as requested
	  (C++23)	    size
			    (public member function of std::allocator<T>)

Category:
	    * Todo no example

http://cppreference.com		  2024.06.10	  std::alloca...te_at_least(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::allocator_traits::allocate_at_least&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help