给std::function对象赋值
- 可以给std::function对象赋值任何类型的对象,但是在模板实例化阶段会报错。
std::function<void(int)> fun1 = 4;
std::function<void(int)> fun2 = std::string("123"); // 报错
以std::function为参数的函数匹配问题
- 因为可以给std::function对象赋值任何类型的对象,所以会出现二义性问题。
#include <iostream>
#include <functional>
void fun(std::function<void(double)>) {}
void fun(std::function<void(int)>) {}
int main() {
std::function<void(int)> f;
fun(f);
// 多个匹配的重载实例
fun([](int) {});
return system("pause");
}
网友评论