std::function
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Old binders and adaptors | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
(until C++17) | ||||
| Non-member functions | ||||
(until C++20) | ||||
| Helper classes | ||||
(until C++17) | ||||
| Deduction guides(C++17) |
Defined in header <functional> | ||
template<class R,class...ArgTypes> function( R(*)(ArgTypes...))-> function<R(ArgTypes...)>; | (1) | (since C++17) |
template<class F> function( F)-> function</*see below*/>; | (2) | (since C++17) |
template<class F> function( F)-> function</*see below*/>; | (3) | (since C++23) |
template<class F> function( F)-> function</*see below*/>; | (4) | (since C++23) |
These deduction guides do not allow deduction from a function withellipsis parameter, and the... in the types is always treated as apack expansion.
The type deduced by these deduction guides may change in a later standard revision (in particular, this might happen ifnoexcept support is added tostd::function in a later standard).
#include <functional>int func(double){return0;}int main(){std::function f{func};// guide #1 deduces function<int(double)>int i=5;std::function g=[&](double){return i;};// guide #2 deduces function<int(double)>}
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3238 | C++17 | behavior of(2) was unclear when F::operator() is &&-qualified | clarified to be excluded from overload resolution |