★13.关于std--function

给std::function对象赋值

  • 可以给std::function对象赋值任何类型的对象,但是在模板实例化阶段会报错。
std::function fun1 = 4;
std::function fun2 = std::string("123");   // 报错

以std::function为参数的函数匹配问题

  • 因为可以给std::function对象赋值任何类型的对象,所以会出现二义性问题。
#include 
#include 

void fun(std::function) {}
void fun(std::function) {}

int main() {
    std::function f;
    fun(f);
    // 多个匹配的重载实例
    fun([](int) {});
    return system("pause");
}

你可能感兴趣的:(★13.关于std--function)