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)