std::ref

作者: cx7 | 来源:发表于2019-03-14 20:54 被阅读0次

    C++11引入了std::ref 为了解决函数式编程的参数是值拷贝的情况

    这几个例子的情况各不相同
    int a = 5;
    
    auto fun = [](int &a){ //引用
        a++;
    };
    
    std::thread(fun,  a); //值拷贝 
    
    std::bind(fun, a); // 值拷贝
    

    以上的例子中 除了直接调用lambda 其余涉及到函数式编程的例子 参数都是值拷贝
    std::ref正是应用在这个情况 将上述的式子改为

    int a = 5;
    
    auto fun = [](int &a){ //引用
        a++;
    };
    
    std::thread(fun,  std::ref(a)); //引用
    
    std::bind(fun, std::ref(a)); //引用
    

    假如异步编程遇到需要引用参数 获取结果值 就需要使用这种方式

    相关文章

      网友评论

        本文标题:std::ref

        本文链接:https://www.haomeiwen.com/subject/urkhmqtx.html