-
Notifications
You must be signed in to change notification settings - Fork 15k
Open
Labels
clang:frontendLanguage frontend issues, e.g. anything involving "Sema"Language frontend issues, e.g. anything involving "Sema"confirmedVerified by a second partyVerified by a second partylambdaC++11 lambda expressionsC++11 lambda expressions
Description
This is a reduced example https://godbolt.org/z/WzshaKvxW:
// -std=c++20 -fsyntax-only
template<int N>
void f();
template<class>
struct X {
using type = decltype([](auto) {
f<[]{
int result = 0;
return result;
}()>();
}(0));
};
X<void> l;<source>:9:20: error: variable 'result' cannot be implicitly captured in a lambda with no capture-default specified
9 | return result;
| ^
<source>:7:13: note: while substituting into a lambda expression here
7 | f<[]{
| ^
<source>:6:27: note: in instantiation of function template specialization 'X<void>::(anonymous class)::operator()<int>' requested here
6 | using type = decltype([](auto) {
| ^
<source>:14:9: note: in instantiation of template class 'X<void>' requested here
14 | X<void> l;
| ^
<source>:8:17: note: 'result' declared here
8 | int result = 0;
| ^
<source>:7:11: note: lambda expression begins here
7 | f<[]{
| ^
<source>:7:12: note: capture 'result' by value
7 | f<[]{
| ^
| result
<source>:7:12: note: capture 'result' by reference
7 | f<[]{
| ^
| &result
<source>:7:12: note: default capture by value
7 | f<[]{
| ^
| =
<source>:7:12: note: default capture by reference
7 | f<[]{
| ^
| &
Metadata
Metadata
Assignees
Labels
clang:frontendLanguage frontend issues, e.g. anything involving "Sema"Language frontend issues, e.g. anything involving "Sema"confirmedVerified by a second partyVerified by a second partylambdaC++11 lambda expressionsC++11 lambda expressions