You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Push immediate function context while transforming lambdas in templates. (#89702)
The following program is [accepted](https://godbolt.org/z/oEc34Trh4) by
Clang, EDG, and MSVC, but rejected by Clang:
```cpp
#include <vector>
consteval auto fn() { return std::vector {1,2,3}; }
template <typename T = int>
void fn2() {
(void)[]() consteval {
for (auto e : fn()) {}
};
}
void caller() {
fn2();
}
```
The stated diagnostic is:
```cpp
<source>:8:21: error: call to consteval function 'fn' is not a constant expression
8 | for (auto e : fn()) {}
```
The body of the lambda should be evaluated as within an immediate
function context when the lambda is marked as `consteval`.
Co-authored-by: cor3ntin <corentinjabot@gmail.com>
0 commit comments