// RUN: %clang_cc1 -std=c++14 -fsyntax-only -verify %s
usingnullptr_t=decltype(nullptr);template<typename T>structBase{T inner;};int z;template<typename T>structX:Base<T>{staticint z;template<int U>structInner{};boolf(T other){// A pair of comparisons; 'inner' is a dependent name so can't be assumed
// to be a template.
returnthis->inner< other >::z;}};voiduse_x(X<int>x){ x.f(0);}template<typename T>structY{staticint z;template<int U>structInner:Y{// expected-note {{declared here}}
};boolf(T other){// We can determine that 'inner' does not exist at parse time, so can
// perform typo correction in this case.
returnthis->inner<other>::z;// expected-error {{no template named 'inner' in 'Y<T>'; did you mean 'Inner'?}}
}};structQ{constexproperatorint(){return0;}};voiduse_y(Y<Q>x){ x.f(Q());}