[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