[Bug c++/106493] New: trailing requires clauses is not used for partial ordering when the ellipsis parameter is present
tabloid.adroit at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Aug 1 00:59:08 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106493
Bug ID: 106493
Summary: trailing requires clauses is not used for partial
ordering when the ellipsis parameter is present
Product: gcc
Version: 13.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: tabloid.adroit at gmail dot com
Target Milestone: ---
test case:
```
template<typename T>
concept AtLeast2 = sizeof(T) >= 2;
template<typename T>
constexpr int doo(int a, ...) requires AtLeast2<int> && true {
return 1;
}
template<typename T>
constexpr int doo(int b) requires AtLeast2<int> {
return 2;
}
static_assert(doo<int>(2) == 1);
```
The assertion fails due to ambiguity. However, I'd expect the trailing requires
clauses kicks in by https://eel.is/c++draft/temp.fct#temp.func.order-6.4
Removing the ellipsis parameter fixes the assertion failure.
More information about the Gcc-bugs
mailing list