Scroll to navigation

std::swap(std::basic_string)(3) C++ Standard Libary std::swap(std::basic_string)(3)

NAME

std::swap(std::basic_string) - std::swap(std::basic_string)

Synopsis


Defined in header <string>
template< class CharT, class Traits, class Alloc >


void swap( std::basic_string<CharT, Traits, Alloc> &lhs, (until C++17)


std::basic_string<CharT, Traits, Alloc> &rhs );
template< class CharT, class Traits, class Alloc >


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


constexpr void
swap( std::basic_string<CharT, Traits, Alloc> &lhs, (since C++20)


std::basic_string<CharT, Traits, Alloc> &rhs ) noexcept(/* see below
*/);


Specializes the std::swap algorithm for std::basic_string. Swaps the contents of lhs
and rhs. Equivalent to lhs.swap(rhs).

Parameters


lhs, rhs - strings whose contents to swap

Return value


(none)

Complexity


Constant.

Exceptions


(since C++17)
noexcept specification:
noexcept(noexcept(lhs.swap(rhs)))

Example

// Run this code


#include <string>
#include <iostream>


int main()
{
std::string a = "AAAA";
std::string b = "BBB";


std::cout << "before swap" << '\n';
std::cout << "a: " << a << '\n';
std::cout << "b: " << b << '\n';


std::swap(a,b);


std::cout << "after swap" << '\n';
std::cout << "a: " << a << '\n';
std::cout << "b: " << b << '\n';
}

Output:


before swap
a: AAAA
b: BBB
after swap
a: BBB
b: AAAA


Defect reports


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


DR Applied to Behavior as published Correct behavior
LWG 2064 C++11 non-member swap was noexcept and inconsistent noexcept removed
with member swap

See also


swap swaps the contents
(public member function)

2022.07.31 http://cppreference.com