[#bsl-list-054]
= xref:bsl.adoc[bsl]::list
:relfileprefix: ../
:mrdocs:

Forward declaration required by `List&lowbar;NodeProctor`&period;

== Synopsis

Declared in `&lt;bslstl&lowbar;list&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;
    class LIST&lowbar;VALUE,
    class LIST&lowbar;ALLOCATOR = xref:bsl/allocator-0df.adoc[bsl::allocator&lt;VALUE&gt;]&gt;
class list;
----

== Type Aliases

[cols="1,4"]
|===
| Name| Description
| xref:bsl/list-054/allocator_type.adoc[`allocator&lowbar;type`] 
| Allocator type used by this list&period;
| xref:bsl/list-054/const_iterator.adoc[`const&lowbar;iterator`] 
| Iterator providing non&hyphen;modifiable access to elements in this list&period;
| xref:bsl/list-054/const_pointer.adoc[`const&lowbar;pointer`] 
| Pointer to a non&hyphen;modifiable element in this list&period;
| xref:bsl/list-054/const_reference.adoc[`const&lowbar;reference`] 
| Reference to a non&hyphen;modifiable element stored in this list&period;
| xref:bsl/list-054/const_reverse_iterator.adoc[`const&lowbar;reverse&lowbar;iterator`] 
| Reverse iterator over non&hyphen;modifiable list elements&period;
| xref:bsl/list-054/difference_type.adoc[`difference&lowbar;type`] 
| Signed integral type used to express distances between iterators&period;
| xref:bsl/list-054/iterator.adoc[`iterator`] 
| Iterator providing modifiable access to elements in this list&period;
| xref:bsl/list-054/pointer.adoc[`pointer`] 
| Pointer to a modifiable element in this list&period;
| xref:bsl/list-054/reference.adoc[`reference`] 
| Reference to an element stored in this list&period;
| xref:bsl/list-054/reverse_iterator.adoc[`reverse&lowbar;iterator`] 
| Reverse iterator over modifiable list elements&period;
| xref:bsl/list-054/size_type.adoc[`size&lowbar;type`] 
| Unsigned integral type large enough to hold any valid element count&period;
| xref:bsl/list-054/value_type.adoc[`value&lowbar;type`] 
| Type of the elements stored in this list&period;
|===


== Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:bsl/list-054/2constructor-028.adoc[`list`]         [.small]#[constructor]#
| Constructors
| xref:bsl/list-054/2destructor.adoc[`&#126;list`] [.small]#[destructor]#
| Destroy this list by calling the destructor for each element and deallocating all allocated storage&period;
| xref:bsl/list-054/operator_assign-03.adoc[`operator&equals;`] 
| Assignment operators
| xref:bsl/list-054/append_range.adoc[`append&lowbar;range`] 
| Append to the end of this object the elements of the specified `range`&period;
| xref:bsl/list-054/assign-089.adoc[`assign`] 
| `assign` overloads
| xref:bsl/list-054/assign_range.adoc[`assign&lowbar;range`] 
| Assign to this object the elements of the specified `range`&period;
| xref:bsl/list-054/back-0b.adoc[`back`] 
| `back` overloads
| xref:bsl/list-054/begin-0d.adoc[`begin`] 
| `begin` overloads
| xref:bsl/list-054/cbegin.adoc[`cbegin`] 
| Return a const iterator to the first element, or `end` if empty&period;
| xref:bsl/list-054/cend.adoc[`cend`] 
| Return the past&hyphen;the&hyphen;end (forward) iterator providing non&hyphen;modifiable access to this list&period;
| xref:bsl/list-054/clear.adoc[`clear`] 
| Remove all the elements from this list&period;
| xref:bsl/list-054/crbegin.adoc[`crbegin`] 
| Return a reverse iterator providing non&hyphen;modifiable access to the last element in this list, and the past&hyphen;the&hyphen;end reverse iterator if this list is empty&period;
| xref:bsl/list-054/crend.adoc[`crend`] 
| Return a const reverse iterator to the reverse end of this list&period;
| xref:bsl/list-054/emplace.adoc[`emplace`] 
| Insert a newly constructed `value&lowbar;type` at the specified `position`&period;
| xref:bsl/list-054/emplace_back.adoc[`emplace&lowbar;back`] 
| Append a newly constructed `value&lowbar;type` object to the back of this list&period;
| xref:bsl/list-054/emplace_front.adoc[`emplace&lowbar;front`] 
| Prepend a newly constructed `value&lowbar;type` object to the front of this list&period;
| xref:bsl/list-054/empty.adoc[`empty`] 
| Return `true` if this list has no elements, and `false` otherwise&period;
| xref:bsl/list-054/end-04.adoc[`end`] 
| `end` overloads
| xref:bsl/list-054/erase-0e.adoc[`erase`] 
| `erase` overloads
| xref:bsl/list-054/front-08.adoc[`front`] 
| `front` overloads
| xref:bsl/list-054/get_allocator.adoc[`get&lowbar;allocator`] 
| Return a copy of the allocator used for memory allocation by this list&period;
| xref:bsl/list-054/insert-0a5.adoc[`insert`] 
| `insert` overloads
| xref:bsl/list-054/insert_range.adoc[`insert&lowbar;range`] 
| Insert the elements of `range` at the specified `position`&period;
| xref:bsl/list-054/max_size.adoc[`max&lowbar;size`] 
| Return an upper bound on the largest number of elements this list can hold&period;
| xref:bsl/list-054/merge-076.adoc[`merge`] 
| `merge` overloads
| xref:bsl/list-054/pop_back.adoc[`pop&lowbar;back`] 
| Remove and destroy the last element of this list&period; The behavior is undefined unless this list contains at least one element&period;
| xref:bsl/list-054/pop_front.adoc[`pop&lowbar;front`] 
| Remove and destroy the first element of this list&period; The behavior is undefined unless this list contains at least one element&period;
| xref:bsl/list-054/prepend_range.adoc[`prepend&lowbar;range`] 
| Prepend to the front of this object the elements of the specified `range`&period;
| xref:bsl/list-054/push_back-0f.adoc[`push&lowbar;back`] 
| `push&lowbar;back` overloads
| xref:bsl/list-054/push_front-03.adoc[`push&lowbar;front`] 
| `push&lowbar;front` overloads
| xref:bsl/list-054/rbegin-01.adoc[`rbegin`] 
| `rbegin` overloads
| xref:bsl/list-054/remove.adoc[`remove`] 
| Erase all elements equal to `value` and return how many were erased&period;
| xref:bsl/list-054/remove_if.adoc[`remove&lowbar;if`] 
| Erase all elements for which `predicate` is true&semi; return the count&period;
| xref:bsl/list-054/rend-0d.adoc[`rend`] 
| `rend` overloads
| xref:bsl/list-054/resize-09.adoc[`resize`] 
| `resize` overloads
| xref:bsl/list-054/reverse.adoc[`reverse`] 
| Reverse the order of the elements in this list&period;
| xref:bsl/list-054/size.adoc[`size`] 
| Return the number of elements in this list&period;
| xref:bsl/list-054/sort-08.adoc[`sort`] 
| `sort` overloads
| xref:bsl/list-054/splice-0a6.adoc[`splice`] 
| `splice` overloads
| xref:bsl/list-054/swap.adoc[`swap`] 
| Exchange the value of this object with that of the specified `other`&period;
| xref:bsl/list-054/unique-0d.adoc[`unique`] 
| `unique` overloads
|===


== Deduction Guides

[cols="1,4"]
|===
| Name| Description
| xref:bsl/list-08.adoc[`list&lt;VALUE&gt;`] 
| Deduce `VALUE` from the value type of the iterator range constructor&period;
| xref:bsl/list-0a.adoc[`list&lt;VALUE&gt;`] 
| Deduce `VALUE` from an initializer&lowbar;list when an allocator pointer is given&period;
| xref:bsl/list-01.adoc[`list&lt;VALUE&gt;`] 
| Deduce `VALUE` from iterators when an allocator pointer is supplied&period;
| xref:bsl/list-05c.adoc[`list&lt;VALUE&gt;`] 
| Deduce `VALUE` from the fill constructor&apos;s value argument&period;
| xref:bsl/list-00.adoc[`list&lt;VALUE, ALLOCATOR&gt;`] 
| Deduce `VALUE` and `ALLOCATOR` from the iterator&hyphen;range constructor&period;
| xref:bsl/list-06.adoc[`list&lt;ranges::range&lowbar;value&lowbar;t&lt;t&lowbar;RANGE&gt;, t&lowbar;ALLOCATOR&gt;`] 
| Deduce the template parameters `VALUE&lowbar;TYPE` and `ALLOCATOR` from the parameters supplied to the constructor of `list`&period;
|===


== Friends

[cols="1,4"]
|===
| Name| Description
| `xref:bsl/List_NodeProctor.adoc[bsl::List&lowbar;NodeProctor]`
| This class provides a proctor to free a node containing an uninitialized `VALUE` object in the event that an exception is thrown&period;
|===

== Non-Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:bsl/erase-086.adoc[`erase`]
| Erase all elements in `l` that compare equal to `value`&period;
| xref:bsl/erase_if-076.adoc[`erase&lowbar;if`]
| Erase all elements in `l` that satisfy the specified `predicate`&period;
| xref:bsl/operator_3way-0f6.adoc[`operator&lt;&equals;&gt;`]
| Perform a lexicographic three&hyphen;way comparison of `lhs` and `rhs`&period;
| xref:bsl/operator_eq-0b6.adoc[`operator&equals;&equals;`]
| Return `true` if `lhs` and `rhs` have the same value, and `false` otherwise&period;
| xref:bsl/swap-06d9.adoc[`swap`]
| Exchange the values of the specified `a` and `b` lists&period;
|===


[.small]#Created with https://www.mrdocs.com[MrDocs]#
