clang does not warn about uninitialized reads in lambdas (original) (raw)
This warns (as it should):
$ cat test.cc
struct S {};
void g() {
S s1 = s1;
}
$ out/gn/bin/clang -c test.cc
test.cc:4:10: warning: variable 's1' is uninitialized when used within its own initialization [-Wuninitialized]
4 | S s1 = s1;
| ~~ ^~
1 warning generated.
This doesn't (but should, too):
$ cat test.cc
struct S {};
void g() {
S s2 = [&]() { return s2; }();
}
$ out/gn/bin/clang -c test.cc
# No diag