From cppreference.com
voidswap(queue&other)noexcept(/* see below */);(since C++11) Exchanges the contents of the container adaptor with those of other. Effectively calls
usingstd::swap;swap(c,other.c);Parameters
other - container adaptor to exchange the contents with Exceptions
specification:
noexcept(noexcept(swap(c,other.c)))In the expression above, the identifier swap is looked up in the same manner as the one used by the C++17
trait.
(since C++11)
(until C++17)
specification:
noexcept(std::is_nothrow_swappable_v<Container>)(since C++17)Complexity
Same as underlying container (typically constant).
Notes
Some implementations (e.g. libc++) provide the swap member function as an extension to pre-C++11 modes.
Example
Run this code
#include<iostream>#include<concepts>#include<queue>#include<string>#include<string_view>#include<vector>template<typenameAdaptor>requires(std::ranges::input_range<typenameAdaptor::container_type>)voidprint(std::string_viewname,constAdaptor&adaptor){structPrinter:Adaptor// to use protected Adaptor::Container c;{voidprint(std::string_viewname)const{std::cout<<name<<" ["<<std::size(this->c)<<"]: ";for(autoconst&elem:this->c)std::cout<<elem<<' ';std::cout<<'\n';}};static_cast<Printerconst&>(adaptor).print(name);}intmain(){std::vector<std::string>v1{"1","2","3","4"},v2{"Ɐ","B","Ɔ","D","Ǝ"};std::queues1(std::move(v1));std::queues2(std::move(v2));print("s1",s1);print("s2",s2);s1.swap(s2);print("s1",s1);print("s2",s2);}Output:
s1 [4]: 4 3 2 1 s2 [5]: Ǝ D Ɔ B Ɐ s1 [5]: Ǝ D Ɔ B Ɐ s2 [4]: 4 3 2 1 Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR Applied to Behavior as published Correct behavior
C++11 the noexcept specification is ill-formed made to work See also