[prev in list] [next in list] [prev in thread] [next in thread]
List: gcc-bugs
Subject: [Bug c++/103876] New: Parameter pack not expanded in lambda within static_assert in a fold-expressio
From: johelegp at gmail dot com via Gcc-bugs <gcc-bugs () gcc ! gnu ! org>
Date: 2021-12-31 14:11:45
Message-ID: bug-103876-4 () http ! gcc ! gnu ! org/bugzilla/
[Download RAW message or body]
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103876
Bug ID: 103876
Summary: Parameter pack not expanded in lambda within
static_assert in a fold-expression of a lambda
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Keywords: rejects-valid
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: johelegp at gmail dot com
CC: johelegp at gmail dot com
Target Milestone: ---
See https://godbolt.org/z/5W1fYn7E4.
```C++
void f() {
[](auto... op) {
(..., void([] {
static_assert([]<class T> {
return requires(T v) { op(v); };
}.template operator()<int>());
}));
}([](...) {});
}
```
```
In instantiation of 'f()::<lambda(auto:1 ...)> [with auto:1 =
{f()::<lambda(...)>}]':
<source>:8:4: required from here
<source>:5:16: error: parameter packs not expanded with '...':
5 | return requires(T v) { op(v); };
| ^~~~~~~~~~~~~~~~~~~~~~~~
<source>:5:16: note: 'op'
<source>:6:33: error: could not convert '<lambda closure
object>f()::<lambda(auto:1 ...)>::<lambda()>::<lambda()>().f()::<lambda(auto:1
...)>::<lambda()>::<lambda()>()' from 'void' to 'bool'
4 | static_assert([]<class T> {
| ~~~~~~~~~~~~~
5 | return requires(T v) { op(v); };
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6 | }.template operator()<int>());
| ~~~~~~~~~~~~~~~~~~~~~~~~~~^~
| |
| void"
```=
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic