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()'