std::bind 定義在
1#include <functional>
有兩種聲明,為
1 2template
<
class
F,
class
... BoundArgs>
unspecified bind(F&& f, BoundArgs&&... bound_args);
和
1 2template
<
class
R,
class
F,
class
... BoundArgs>
unspecified bind(F&& f, BoundArgs&&... bound_args);
其中的 … 是 c++0x 引入的 variadic template。
std::bind 最基本的使用如
1 2 3 4 5int
f(
int
a,
int
b)
{
return
a + b;
}
std::bind(f, 1, 2 );
配合 std::placeholders 則可以產生一些函數對象,比如配合 auto 使用:
1 2 3 4 5 6int
g(
int
a,
int
b,
int
c)
{
return
a + b + c;
}
auto gg = std::bind( g, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);
注意一下使用方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19#include <functional>
int
f(
int
a,
int
b)
{
return
a + b;