home | help
std::allocator_traits(3)       C++ Standard Libary	std::allocator_traits(3)

NAME
     std::allocator_traits - std::allocator_traits

Synopsis
	Defined in header <memory>
	template< class Alloc >     (since C++11)
	struct allocator_traits;

	The allocator_traits class template provides the standardized way to ac-
     cess various
	properties of Allocators. The standard containers and other standard li-
     brary
	components  access allocators through this template, which makes it pos-
     sible to use
	any class type as an allocator, as long as the user-provided specializa-
     tion of
	std::allocator_traits implements all required functionality.

	A program  that  declares  an  explicit  or  partial  specialization  of
     (since C++23)
	std::allocator_traits is ill-formed, no diagnostic required.

	The default, non-specialized, std::allocator_traits contains the follow-
     ing members:

Member types
	Type				       Definition
	allocator_type			       Alloc
	value_type			       Alloc::value_type
	pointer 			       Alloc::pointer if present, other-
     wise
					       value_type*
					       Alloc::const_pointer  if present,
     otherwise
	const_pointer			       std::pointer_traits<pointer>::re-
     bind<const
					       value_type>
	void_pointer			       Alloc::void_pointer  if	present,
     otherwise
					       std::pointer_traits<pointer>::re-
     bind<void>
					       Alloc::const_void_pointer      if
     present,
	const_void_pointer		       otherwise
					       std::pointer_traits<pointer>::re-
     bind<const
					       void>
	difference_type 			   Alloc::difference_type     if
     present, otherwise
					       std::pointer_traits<pointer>::dif-
     ference_type
	size_type			       Alloc::size_type if present, oth-
     erwise
					       std::make_unsigned<differ-
     ence_type>::type
	propagate_on_container_copy_assignment		Alloc::propagate_on_con-
     tainer_copy_assignment
					       if	present,       otherwise
     std::false_type
	propagate_on_container_move_assignment		Alloc::propagate_on_con-
     tainer_move_assignment
					       if	present,       otherwise
     std::false_type
	propagate_on_container_swap			Alloc::propagate_on_con-
     tainer_swap if
					       present, 	       otherwise
     std::false_type
	is_always_equal 			   Alloc::is_always_equal     if
     present, otherwise
					       std::is_empty<Alloc>::type

Member alias templates
	Type		 Definition
			 Alloc::rebind<T>::other if present, otherwise SomeAllo-
     cator<T,
	rebind_alloc<T>  Args> if this Alloc is  of  the  form	SomeAllocator<U,
     Args>, where
			 Args is zero or more type arguments
	rebind_traits<T> std::allocator_traits<rebind_alloc<T>>

Member functions
	allocate			       allocates  uninitialized  storage
     using the
	[static]			      allocator
					      (public static member function)
	allocate_at_least		       allocates  storage  at  least  as
     large as the
	[static] (C++23)		      requested size via an allocator
					      (public static member function)
	deallocate			       deallocates storage using the al-
     locator
	[static]			      (public static member function)
	construct			      constructs an object in the  allo-
     cated storage
	[static]			      (function template)
	destroy 			       destructs an object stored in the
     allocated
	[static]			      storage
					      (function template)
	max_size			      returns the  maximum  object  size
     supported by
	[static]			      the allocator
					      (public static member function)
	select_on_container_copy_construction obtains the allocator to use after
     copying a
	[static]			      standard container
					      (public static member function)

	Defect reports

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

	   DR	 Applied to	     Behavior as published		 Correct
     behavior
	LWG  2108  C++11       there  was  no  way to show an allocator   is_al-
     ways_equal provided
			    is stateless

See also
	AllocatorAwareContainer  container using  allocator;  associated  traits
     (e.g.
	(C++11) 		 propagate_on_container_swap) usage
				 (named requirement)
	allocator		 the default allocator
				 (class template)
	scoped_allocator_adaptor  implements  multi-level  allocator  for multi-
     level containers
	(C++11) 		 (class template)
	pointer_traits		 provides information about pointer-like types
	(C++11) 		 (class template)

http://cppreference.com 	   2024.06.10		std::allocator_traits(3)

home | help