blob: 4a1f0a4e10a325319f7b8987a8d968c0c0adbc1d [file] [log] [blame]
// { dg-options "-fpretty-templates" }
template<typename T>
struct A
{
template<typename U>
void f() {} // { dg-line Af }
template<typename U>
void g(U) {} // { dg-line Ag }
};
template<typename T>
struct B
{
template<typename U>
void f(U) {} // { dg-line Bf }
template<typename U>
void g(U, T) {} // { dg-line Bg }
};
struct C
{
template<typename U>
void f(U) {} // { dg-line Cf }
template<typename U>
void g() {} // { dg-line Cg }
};
int main()
{
A<int>().f(0); // { dg-error "no matching function for call to 'A<int>::f\\(int\\)'" }
// { dg-message "candidate: 'template<class U> void A<T>::f\\(\\) \\\[with T = int\\\]'" "" { target *-*-* } Af }
A<int>().g(); // { dg-error "no matching function for call to 'A<int>::g\\(\\)'" }
// { dg-message "candidate: 'template<class U> void A<T>::g\\(U\\) \\\[with T = int\\\]'" "" { target *-*-* } Ag }
B<int>().f(); // { dg-error "no matching function for call to 'B<int>::f\\(\\)'" }
// { dg-message "candidate: 'template<class U> void B<T>::f\\(U\\) \\\[with T = int\\\]'" "" { target *-*-* } Bf }
B<int>().g(); // { dg-error "no matching function for call to 'B<int>::g\\(\\)'" }
// { dg-message "candidate: 'template<class U> void B<T>::g\\(U, T\\) \\\[with T = int\\\]'" "" { target *-*-* } Bg }
B<float>().g(0); // { dg-error "no matching function for call to 'B<float>::g\\(int\\)'" }
// { dg-message "candidate: 'template<class U> void B<T>::g\\(U, T\\) \\\[with T = float\\\]'" "" { target *-*-* } Bg }
C().f(); // { dg-error "no matching function for call to 'C::f\\(\\)'" }
// { dg-message "candidate: 'template<class U> void C::f\\(U\\)'" "" { target *-*-* } Cf }
C().g(0); // { dg-error "no matching function for call to 'C::g\\(int\\)'" }
// { dg-message "candidate: 'template<class U> void C::g\\(\\)'" "" { target *-*-* } Cg }
}