捕获列表中的“k”未命名变量

fin*_*rra 6 c++ lambda closures c++17

嗨堆栈溢出社区!

我想知道为什么这段代码不能用 C++17 编译

std::unordered_map<int, int> a;
for (const auto& [k, v]: a) {
  auto l = [k] () {};
}
Run Code Online (Sandbox Code Playgroud)

错误“捕获列表中的'k'未命名变量”。

但这编译得很好

std::unordered_map<int, int> a;
for (const auto& [k, v]: a) {
  auto l = [k = k] () {};
}
Run Code Online (Sandbox Code Playgroud)

如果 [k, v] 不是变量,那么 k 是什么?