相关疑难解决方法(0)

值可变的lambda捕获不适用于const&?

考虑以下:

void test( const int &value )
{
    auto testConstRefMutableCopy = [value] () mutable {
        value = 2; // compile error: Cannot assign to a variable captured by copy in a non-mutable lambda
    };

    int valueCopy = value;
    auto testCopyMutableCopy = [valueCopy] () mutable {
        valueCopy = 2; // compiles OK
    };
}
Run Code Online (Sandbox Code Playgroud)

当我将lambda声明为可变并按value值捕获时(为什么我认为它是副本),为什么第一个版本是编译错误?

使用clang(x86_64-apple-darwin14.3.0)进行测试,这是错误消息的来源,以及Visual C++(vc120).

c++ lambda c++11

13
推荐指数
2
解决办法
3933
查看次数

标签 统计

c++ ×1

c++11 ×1

lambda ×1