1// PR c++/35146
2
3template <typename T> struct S {};
4
5template <typename R> struct ref;
6template <>           struct ref<double> { typedef double result; };
7
8template <typename T>
9void foo(typename ref<T>::result, S<T>*);
10template <>
11void foo(S<double>,               S<double>*); // { dg-error "does not match" }
12template <>
13void foo(double alpha,            S<double>* x)
14{
15  alpha; x;
16}
17