cor3ntin added a comment. In D124351#4101611 <https://reviews.llvm.org/D124351#4101611>, @rupprecht wrote:
> Hi, me again :) > > I ran into an interesting build breakage from this, I can't tell if it's a > legitimate breakage based on reading P2036R3 and P2579R0 (mostly I'm not a > language lawyer). > > struct StringLiteral { > template <int N> > StringLiteral(const char (&array)[N]) > __attribute__((enable_if(N > 0 && N == __builtin_strlen(array) + 1, > "invalid string literal"))); > }; > > struct Message { > Message(StringLiteral); > }; > > void Func1() { > auto x = Message("x"); // Note: this is fine > > // Note: "xx\0" to force a different type, StringLiteral<3>, otherwise > this > // successfully builds. > auto y = [&](decltype(Message("xx"))) {}; > > // ^ fails with: repro.cc:18:13: error: reference to local variable > 'array' > // declared in enclosing function 'StringLiteral::StringLiteral<3>' > > (void)x; > (void)y; > } > > https://godbolt.org/z/M4E6jKxxn > > Does this look like an intended breakage from this patch? Looks like we fail to enter the appropriate context when evaluating the lambda, definitely Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D124351/new/ https://reviews.llvm.org/D124351 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits