efriedma added a comment. Relevant bit of the AST:
`-ExprWithCleanups 0xd16a780 <line:6:3, col:8> 'void':'void' `-CXXOperatorCallExpr 0xd16a678 <col:3, col:8> 'void':'void' '()' |-ImplicitCastExpr 0xd16a5a8 <col:4, col:8> 'void (*)(int (&&)[]) const' <FunctionToPointerDecay> | `-DeclRefExpr 0xd16a528 <col:4, col:8> 'void (int (&&)[]) const' lvalue CXXMethod 0xd14f7f8 'operator()' 'void (int (&&)[]) const' |-ImplicitCastExpr 0xd16a5e8 <col:3> 'const (lambda at <stdin>:5:12)' lvalue <NoOp> | `-DeclRefExpr 0xd16a460 <col:3> '(lambda at <stdin>:5:12)':'(lambda at <stdin>:5:12)' lvalue Var 0xd14f628 'f' '(lambda at <stdin>:5:12)':'(lambda at <stdin>:5:12)' `-MaterializeTemporaryExpr 0xd16a660 <col:5, col:7> 'int[1]' xvalue `-InitListExpr 0xd16a600 <col:5, col:7> 'int[1]' `-ImplicitCastExpr 0xd16a640 <col:6> 'int' <LValueToRValue> `-DeclRefExpr 0xd16a480 <col:6> 'int' lvalue ParmVar 0xd14f3a8 'a' 'int' At first glance, I'd consider this a problem with the AST: there should be a no-op cast from `int[1]` to `int[]`. We generate such a cast for the following: void foo(int a) { auto f = [](int(&&)[]) {}; int aa[1] = {a}; f(static_cast<int(&&)[1]>(aa)); } Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D151515/new/ https://reviews.llvm.org/D151515 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits