小编Eag*_*gle的帖子

可以使用不正确的签名将C++ 11 lambda分配给std :: function

以下编译和运行(在Apple LLVM版本6.1.0和Visual C++ 2015下):

#include <functional>
#include <iostream>

struct s { int x; };

int main(int argc, char **argv)
{
    std::function<void (s &&)> f = [](const s &p) { std::cout << p.x; };
    f(s {1});
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么分配不会std::function<void (s &&)> f = [](const s &p) { std::cout << p.x; };产生错误?接受右值引用的函数不应该与接受const左值引用的函数具有相同的签名,如果它?const从lambda声明中删除确实会产生预期的错误.

c++ lambda rvalue-reference c++11

18
推荐指数
2
解决办法
1219
查看次数

标签 统计

c++ ×1

c++11 ×1

lambda ×1

rvalue-reference ×1