https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93638

            Bug ID: 93638
           Summary: [concepts] Dependent names in requires clause reported
                    as different types when function definition is not
                    inline
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: lyberta at lyberta dot net
  Target Milestone: ---

This happens a lot but I can't pinpoint exact cases. Here's minimal repro for
one case:

#include <concepts>

template <typename T>
class A
{
    using type = int;

    template <typename U>
    requires std::same_as<type, U>
    void Foo();
};

template <typename T>
template <typename U>
requires std::same_as<typename A<T>::type, U>
void A<T>::Foo()
{
}

error: no declaration matches 'void A<T>::Foo()'

Reply via email to