rupprecht wrote: I bisected a build failure to this commit. I can't figure out if it's expected or not. I minimized it to this:
```c++ #include <concepts> enum class KindEnum { Unknown = 0, Foo = 1, }; template <typename T> concept KnownKind = T::kind() != KindEnum::Unknown; template <KnownKind T> struct KnownType; struct Type { KindEnum kind() const; static Type f(Type t); template <KnownKind T> static KnownType<T> f(T t); static void g() { Type t; f(t); } }; template <KnownKind T> struct KnownType { static constexpr KindEnum kind() { return KindEnum::Foo; } }; ``` gcc accepts it. After this commit, clang rejects it: ``` <source>:9:21: error: substitution into constraint expression resulted in a non-constant expression 9 | concept KnownKind = T::kind() != KindEnum::Unknown; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <source>:19:15: note: while checking the satisfaction of concept 'KnownKind<Type>' requested here 19 | template <KnownKind T> | ^ <source>:19:15: note: while substituting template arguments into constraint expression here 19 | template <KnownKind T> | ^~~~~~~~~ <source>:24:9: note: while checking constraint satisfaction for template 'f<Type>' required here 24 | f(t); | ^ <source>:24:9: note: while substituting deduced template arguments into function template 'f' [with T = Type] <source>:9:24: note: implicit use of 'this' pointer is only allowed within the evaluation of a call to a 'constexpr' member function 9 | concept KnownKind = T::kind() != KindEnum::Unknown; | ^ 1 error generated. ``` Live link: https://godbolt.org/z/oGh319a44 Is this sort of breakage expected? https://github.com/llvm/llvm-project/pull/122423 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits