Summary: | [concepts] multidimensional subscript operator inside requires with variable template arguments is broken | ||
---|---|---|---|
Product: | gcc | Reporter: | Luke Dalessandro <ldalessandro> |
Component: | c++ | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | RESOLVED DUPLICATE | ||
Severity: | normal | CC: | ppalka, webrown.cpp |
Priority: | P3 | Keywords: | rejects-valid |
Version: | 13.0 | ||
Target Milestone: | --- | ||
See Also: | https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102611 | ||
Host: | Target: | ||
Build: | Known to work: | ||
Known to fail: | Last reconfirmed: | 2023-02-09 00:00:00 | |
Bug Depends on: | |||
Bug Blocks: | 67491 |
Description
Luke Dalessandro
2023-02-09 07:25:59 UTC
Confirmed, even this is rejected: ``` auto foo(auto a, auto... i) -> decltype(auto) { if constexpr (requires { a[i...]; }) { return a[i...]; } else { return a; } } int x = foo(1, 1); ``` Note clang just ICEs. Also the above works if it is not a variable argument auto ... That is: ``` template<typename T, typename T1> auto foo(T a, T1 i) { if constexpr (requires { a[i]; }) { return a[i]; } else { return a; } } int x = foo(1, 1); ``` Compiles just fine. dup of the recently fixed PR111493 *** This bug has been marked as a duplicate of bug 111493 *** |