// RUN: %clang_cc1 -fsyntax-only -verify %s
template<typename T, typename U>
struct X0 {
struct Inner;
};
template<typename T, typename U>
struct X0<T, U>::Inner {
T x;
U y;
void f() { x = y; } // expected-error{{incompatible}}
};
void test(int i, float f) {
X0<int, float>::Inner inner;
inner.x = 5;
inner.y = 3.4;
inner.f();
X0<int*, float *>::Inner inner2;
inner2.x = &i;
inner2.y = &f;
inner2.f(); // expected-note{{instantiation}}
}