考虑这一例子
int main() {
const char* x;
[x = 1] (decltype(-x) y) {};
}
https://godbolt.org/z/5cnhzTo34”rel=“nofollow noreferer”> 我在Gobolt
不过,我可以指出,标准为什么要求这样做。 http://eel.is/c++draft/expr.prim.lambda.capture#6”rel=“nofollow noreferer”[expr.prim.lambda.capture]/6,
a
init-capture inhabits the lambda scope ([basic.cop.lambda]) of the lambda-expression。 [......]
The lambda scope is defined in [basic.cop.lambda]:
www.un.org/chinese/ga/president
<>m>lambda-introducer 是方括号内的部分,因此,在[x = 1]
的封闭式方括号之后,“x
的名称查询应当立即开始找到init-capture,而不是x
在封闭式封条范围内宣布的。
但是,据汇编者称,虽然我们仍然在分参数-声明-clause上,但名称查询x
则没有发现init-capture。 我肯定他们会回声,有点错,但这是什么?