std::swap(std::basic_string)

Header: <string>

Specializes the std::swap algorithm for std::basic_string. Swaps the contents of lhs and rhs.

# Declarations

template< class CharT, class Traits, class Alloc >
void swap( std::basic_string<CharT, Traits, Alloc>& lhs,
std::basic_string<CharT, Traits, Alloc>& rhs );

(until C++17)

template< class CharT, class Traits, class Alloc >
void swap( std::basic_string<CharT, Traits, Alloc>& lhs,
std::basic_string<CharT, Traits, Alloc>& rhs ) noexcept(/* see below */);

(since C++17) (constexpr since C++20)

# Parameters

# Return value

(none)

# Example

#include <iostream>
#include <string>
 
int main()
{
    std::string a = "AAA";
    std::string b = "BBBB";
 
    std::cout << "Before swap:\n"
                 "a = " << a << "\n"
                 "b = " << b << "\n\n";
 
    std::swap(a, b);
 
    std::cout << "After swap:\n"
                 "a = " << a << "\n"
                 "b = " << b << '\n';
}

# Defect reports

DRApplied toBehavior as publishedCorrect behavior
LWG 2064C++11non-member swap was noexcept and inconsistent with member swapnoexcept removed

# See also