// RUN: %clang_cc1 -fsyntax-only -verify %s template struct X { template struct Inner { }; template void f(T, U) { } }; template<> template struct X::Inner { U member; }; template<> template void X::f(int x, U y) { x = y; // expected-error{{incompatible type}} } void test(X xi, X xl, float *fp) { X::Inner xii; xii.member = fp; xi.f(17, 25); xi.f(17, 3.14159); xi.f(17, fp); // expected-note{{instantiation}} X::Inner xli; xli.member = fp; // expected-error{{no member}} xl.f(17, fp); // okay }