Namespaces
Variants
Actions

std::swap(std::function)

From cppreference.com
< cpp‎ | utility‎ | functional‎ | function
 
 
 
Function objects
Function invocation
(C++17)(C++23)
Identity function object
(C++20)
Old binders and adaptors
(until C++17*)
(until C++17*)
(until C++17*)
(until C++17*)  
(until C++17*)
(until C++17*)(until C++17*)(until C++17*)(until C++17*)
(until C++20*)
(until C++20*)
(until C++17*)(until C++17*)
(until C++17*)(until C++17*)

(until C++17*)
(until C++17*)(until C++17*)(until C++17*)(until C++17*)
(until C++20*)
(until C++20*)
 
 
Defined in header <functional>
template<class R, class... Args>
void swap(std::function<R(Args...)>& lhs, std::function<R(Args...)>& rhs )noexcept;
(since C++11)

Overloads the std::swap algorithm for std::function. Exchanges the state of lhs with that of rhs. Effectively calls lhs.swap(rhs).

Contents

[edit]Parameters

lhs, rhs - polymorphic function wrappers whose states to swap

[edit]Return value

(none)

[edit]Example

#include <functional>#include <iostream>   void foo(constchar* str, int x){std::cout<<"foo(\""<< str <<"\", "<< x <<")\n";}   void bar(constchar* str, int x){std::cout<<"bar(\""<< str <<"\", "<< x <<")\n";}   int main(){std::function<void(constchar*, int)> f1{foo};std::function<void(constchar*, int)> f2{bar};   f1("f1", 1); f2("f2", 2);   std::cout<<"std::swap(f1, f2);\n";std::swap(f1, f2);   f1("f1", 1); f2("f2", 2);}

Output:

foo("f1", 1) bar("f2", 2) std::swap(f1, f2); bar("f1", 1) foo("f2", 2)

[edit]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 2062C++11 overload of swap for function was not required to be noexcept required

[edit]See also

swaps the contents
(public member function)[edit]
specializes the std::swap algorithm
(function)[edit]
close