1 // RUN: %clang_cc1 -std=c++14 -fsyntax-only -verify %s
3 using nullptr_t
= decltype(nullptr);
21 // A pair of comparisons; 'inner' is a dependent name so can't be assumed
23 return this->inner
< other
> ::z
; // expected-warning {{comparisons like 'X<=Y<=Z' don't have their mathematical meaning}}
27 void use_x(X
<int> x
) { x
.f(0); } // expected-note {{requested here}}
34 struct Inner
; // expected-note {{declared here}}
37 // We can determine that 'inner' does not exist at parse time, so can
38 // perform typo correction in this case.
39 return this->inner
<other
>::z
; // expected-error {{no template named 'inner' in 'Y<T>'; did you mean 'Inner'?}}
45 struct Y
<T
>::Inner
: Y
{ };
47 struct Q
{ constexpr operator int() { return 0; } };
48 void use_y(Y
<Q
> x
) { x
.f(Q()); }