std::swap(std::basic_string) - cppreference.com

From cppreference.com

Defined in header

<string>

template<classCharT,classTraits,classAlloc>voidswap(std::basic_string<CharT,Traits,Alloc>&lhs,std::basic_string<CharT,Traits,Alloc>&rhs);(until C++17)template<classCharT,classTraits,classAlloc>voidswap(std::basic_string<CharT,Traits,Alloc>&lhs,std::basic_string<CharT,Traits,Alloc>&rhs)noexcept(/* see below */);(since C++17)
(constexpr since C++20)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

noexcept

specification:

noexcept(noexcept(lhs.swap(rhs)))(since C++17)Example

Run this code

#include<iostream>#include<string>intmain(){std::stringa="AAA";std::stringb="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';}Output:

Before swap: a = AAA b = BBBB After swap: a = BBBB b = AAA 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 with member swapnoexcept removed See also

swaps the contents
(public member function)

[edit]