std::function
来自cppreference.com
< cpp | utility | functional
在头文件 <functional> 中定义
|
||
template< class > class function; /* 未定义 */ |
(C++11 起) | |
template< class R, class... Args > class function<R(Args...)> |
(C++11 起) | |
类模版 std::function
是一种通用、多态的函数封装。std::function
的实例可以对任何可以调用的 目标 进行存储、复制、和调用操作,这些目标包括函数、lambda 表达式、绑定表达式、以及其它函数对象等。
目录 |
[编辑] 成员类型
Type | Definition |
result_type
|
R
|
argument_type
|
T ,前提是 sizeof...(Args)==1 且 Args... 中有且仅有 T
|
first_argument_type
|
T1 ,前提是 sizeof...(Args)==2 且 T1 是其中的第一个
|
second_argument_type
|
T2 ,前提是 sizeof...(Args)==2 且 T2 是其中的第二个
|
[编辑] 成员函数
std::function构造一个新的实例 原文: constructs a new std::function instance (公共成员函数) | |
销毁一个std::function实例 (公共成员函数) | |
分配的内容 (公共成员函数) | |
交换的内容 (公共成员函数) | |
分配一个新的目标 (公共成员函数) | |
检查,如果包含一个有效的目标 原文: checks if a valid target is contained (公共成员函数) | |
调用的目标 (公共成员函数) | |
目标访问 | |
获得所存储的目标的typeidstd::function 原文: obtains the typeid of the stored target of a std::function (公共成员函数) | |
获得一个指针std::function存储的目标的 原文: obtains a pointer to the stored target of a std::function (公共成员函数) |
[编辑] 非成员函数
(C++11) |
专业的std::swap算法 原文: specializes the std::swap algorithm (函数模板) |
将 std::function 与 std::nullptr 相比较 (函数模板) |
[编辑] 辅助类
专业的std::uses_allocator型特征 原文: specializes the std::uses_allocator type trait (类模板特化) |
[编辑] 示例
#include <functional> #include <iostream> struct Foo { Foo(int num) : num_(num) {} void print_add(int i) const { std::cout << num_+i << '\n'; } int num_; }; void print_num(int i) { std::cout << i << '\n'; } int main() { // 保存自由函数 std::function<void(int)> f_display = print_num; f_display(-9); // 保存 lambda 表达式 std::function<void()> f_display_42 = []() { print_num(42); }; f_display_42(); // 保存 std::bind 的结果 std::function<void()> f_display_31337 = std::bind(print_num, 31337); f_display_31337(); // 保存成员函数 std::function<void(const Foo&, int)> f_add_display = &Foo::print_add; Foo foo(314159); f_add_display(foo, 1); }
输出:
-9 42 31337 314160
[编辑] 相关条目
(C++11) |
调用一个空的std::function时抛出的异常 原文: the exception thrown when invoking an empty std::function (类) |
(C++11) |
创建一个函数对象的指针的成员 原文: creates a function object out of a pointer to a member (函数模板) |