std::forward_list<T,Allocator>::merge

The function does nothing if other refers to the same object as *this.

# Declarations

void merge( forward_list& other );

(since C++11)

void merge( forward_list&& other );

(since C++11)

template< class Compare >
void merge( forward_list& other, Compare comp );

(since C++11)

template< class Compare >
void merge( forward_list&& other, Compare comp );

(since C++11)

# Parameters

# Return value

(none)

# Example

#include <iostream>
#include <forward_list>
 
std::ostream& operator<<(std::ostream& ostr, const std::forward_list<int>& list)
{
    for (const int i : list)
        ostr << ' ' << i;
    return ostr;
}
 
int main()
{
    std::forward_list<int> list1 = {5, 9, 1, 3, 3};
    std::forward_list<int> list2 = {8, 7, 2, 3, 4, 4};
 
    list1.sort();
    list2.sort();
    std::cout << "list1: " << list1 << '\n';
    std::cout << "list2: " << list2 << '\n';
 
    list1.merge(list2);
    std::cout << "merged:" << list1 << '\n';
}

# Defect reports

DRApplied toBehavior as publishedCorrect behavior
LWG 2045C++11O(1) node moving could not be guaranteed ifget_allocator() != other.get_allocator()the behavior isundefined in this case
LWG 3088C++11the effect when *this and other referto the same object was not specifiedoperator< could misbehave for pointer elementsspecified as no-opimplementation-definedstrict total order used

# See also