Example:
template <typename U, typename T>
concept True = true;
template <typename K>
struct Foo {
template <True<K> U>
void method(U t);
};
void s() {
Foo<int> k;
k.method(1);
}
Clang generates mangled name _ZN3FooIiE6methodITk4TrueIT_EiEEvS3_ for the template specialization Foo<int>::method. However this mangled name can not be demangled by the official tool llvm-cxxfilt.
It looks like something wrong with the constrain True part.
PS. gcc trunk generates a different name _ZN3FooIiE6methodIiEEvT_, which can be demangled, but it doesn't contain the constraint.