// RUN: %clang_cc1 -fsyntax-only -verify -std=c++20 %s
structA;structB;template<typename>constexprbool True =true;template<typename T> concept C = True<T>;voidf(C auto&,auto&)=delete;template<C Q>voidf(Q &, C auto&);voidg(struct A *ap,struct B *bp){f(*ap,*bp);}template<typename T,typename U>structX{};template<typename T, C U,typename V>booloperator==(X<T, U>,V)=delete;template<C T, C U, C V>booloperator==(T, X<U, V>);boolh(){return X<void*,int>{}==0;}namespacePR53640{template<typename T>
concept C =true;template<C T>voidf(T t){}// expected-note {{candidate function [with T = int]}}
template<typename T>voidf(const T &t){}// expected-note {{candidate function [with T = int]}}
intg(){f(0);// expected-error {{call to 'f' is ambiguous}}
}structS{template<typename T>explicitS(T)noexcept requires C<T>{}// expected-note {{candidate constructor}}
template<typename T>explicitS(const T &)noexcept{}// expected-note {{candidate constructor}}
};inth(){
S s(4);// expected-error-re {{call to constructor of {{.*}} is ambiguous}}
}}