home | help
std::pmr::p...ic_allocator(3)  C++ Standard Libary std::pmr::p...ic_allocator(3)

NAME
     std::pmr::polymorphic_allocator - std::pmr::polymorphic_allocator

Synopsis
	Defined in header <memory_resource>
	template< class T >		     (since C++17)
	class polymorphic_allocator;	     (until C++20)
	template< class T = std::byte >      (since C++20)
	class polymorphic_allocator;

	The class template std::pmr::polymorphic_allocator is an Allocator which
     exhibits
	different  allocation  behavior  depending upon the std::pmr::memory_re-
     source from
	which it is constructed. Since memory_resource uses runtime polymorphism
     to manage
	allocations, different container instances with polymorphic_allocator as
     their
	static allocator type are interoperable, but can behave as if  they  had
     different
	allocator types.

	All  specializations  of  polymorphic_allocator  meet the allocator com-
     pleteness
	requirements.

	The polymorphic_allocator::construct member function does uses-allocator
	construction, so that the elements  of	a  container  using  a	polymor-
     phic_allocator will
	use that same allocator for their own allocations. For example, a
	std::pmr::vector<std::pmr::string> will use the same memory_resource for
     the
	vector's storage and each string's storage.

	For non-polymorphic allocators, similar propagation can be achieved with
     the help of
	std::scoped_allocator_adaptor.

Member types
	Member type definition
	value_type  T

Member functions
	constructor			      constructs a polymorphic_allocator
					      (public member function)
	destructor			      implicitly declared destructor
	(implicitly declared)		      (public member function)
	operator=				copy   assignment   operator  is
     deleted
	[deleted]			      (public member function)

Public member functions
	allocate			      allocate memory
					      (public member function)
	deallocate			      deallocate memory
					      (public member function)
	construct			      constructs an object in  allocated
     storage
					      (public member function)
	destroy 			       destroys  an  object in allocated
     storage
	(deprecated in C++20)		      (public member function)
	(undeprecated in C++26)
	allocate_bytes			      allocate raw aligned  memory  from
     the
	(C++20) 			      underlying resource
					      (public member function)
	deallocate_bytes		       free raw memory obtained from al-
     locate_bytes
	(C++20) 			      (public member function)
	allocate_object 		      allocates raw memory suitable  for
     an object or
	(C++20) 			      an array
					      (public member function)
	deallocate_object		      frees raw memory obtained by allo-
     cate_object
	(C++20) 			      (public member function)
	new_object			      allocates and constructs an object
	(C++20) 			      (public member function)
	delete_object			      destroys and deallocates an object
	(C++20) 			      (public member function)
					      create a new polymorphic_allocator
     for use by
	select_on_container_copy_construction a container's copy constructor
					      (public member function)
					      returns  a pointer to the underly-
     ing memory
	resource			      resource
					      (public member function)

Non-member functions
	operator==	   compare two polymorphic_allocators
	operator!=	   (function)
	(removed in C++20)

Notes
	polymorphic_allocator does not propagate on container  copy  assignment,
     move
	assignment, or swap. As a result, move assignment of a polymorphic_allo-
     cator-using
	container  can	throw, and swapping two polymorphic_allocator-using con-
     tainers whose
	allocators do not compare equal results in undefined behavior.

	      Feature-test macro	 Value	  Std		      Feature
	__cpp_lib_polymorphic_allocator   201902L   (C++20)   std::pmr::polymor-
     phic_allocator<> as
							a vocabulary type

See also
	memory_resource  an abstract interface for classes that encapsulate mem-
     ory resources
	(C++17) 	(class)

http://cppreference.com 	   2024.06.10	   std::pmr::p...ic_allocator(3)

home | help