tbaeder added inline comments.
================
Comment at: clang/test/AST/Interp/lambda.cpp:92
+ static_assert(foo() == 1); // expected-error {{not an integral constant
expression}}
+}
+
----------------
aaron.ballman wrote:
> How about some tests like:
> ```
> constexpr int call_thru_func_ptr(int i) {
> auto l = [](int i) { return i; };
> int (*fp)(int) = l;
> return fp(i);
> }
> static_assert(call_thru_func_ptr(12) == 12);
>
> constexpr int call_through_copied_lambda(auto lam, int i) {
> auto copy = lam;
> return copy(i);
> }
>
> constexpr int call_through_copied_lambda(auto lam) {
> auto copy = lam;
> return copy();
> }
>
> void func() {
> constexpr int i = 12;
> static_assert(call_through_copied_lambda([i]() { return i; }) == 12);
> }
> ```
Heh:
```
array.cpp:1245:15: error: static assertion expression is not an integral
constant expression
1245 | static_assert(call_thru_func_ptr(12) == 12);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
array.cpp:1243:10: note: non-constexpr function '__invoke' cannot be used in a
constant expression
1243 | return fp(i);
| ^
array.cpp:1245:15: note: in call to 'call_thru_func_ptr(12)'
1245 | static_assert(call_thru_func_ptr(12) == 12);
| ^
array.cpp:1239:12: note: declared here
1239 | auto l = [](int i) { return i; };
| ^
```
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D146030/new/
https://reviews.llvm.org/D146030
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits