为什么我不能改变按值捕获的 const 引用?

Iva*_*n B 6 c++ lambda c++17

看看这个代码片段:

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 的错误信息似乎是一个错误,在该问题中没有讨论。我应该删除这个问题吗?