看看这个代码片段:
int x = 3;
const int &y= x;
auto f = [y]() mutable{
y = 0;
};
Run Code Online (Sandbox Code Playgroud)
clans 给出错误:
> clang++-7 -pthread -std=c++17 -o main main.cpp
main.cpp:13:7: error: cannot assign to a variable captured by copy in a non-mutable
lambda
y = 0;
~ ^
1 error generated.
Run Code Online (Sandbox Code Playgroud)
如果通过 捕获则有效[y=y]。
为什么会出现这种行为?编译器是否将类型推导为const int?如果是这样,为什么 clang 会给出关于非可变 lambda 的错误?
[更新]
问题的第一部分似乎已经有了其他人指出的答案:lambda capture by value mutable does not work with const &?
clang 的错误信息似乎是一个错误,在该问题中没有讨论。我应该删除这个问题吗?
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |