★13.关于std--function

给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");
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容