// RUN: clang-cc -fsyntax-only -std=c++0x -verify %s | |
template<typename T> struct X; | |
template<int I> struct Y; | |
X<X<int>> *x1; | |
Y<(1 >> 2)> *y1; | |
Y<1 >> 2> *y2; // FIXME: expected-error{{expected unqualified-id}} | |
X<X<X<X<X<int>>>>> *x2; | |
template<> struct X<int> { }; | |
typedef X<int> X_int; | |
struct Z : X_int { }; | |
void f(const X<int> x) { | |
(void)reinterpret_cast<X<int>>(x); // expected-error{{reinterpret_cast from}} | |
(void)reinterpret_cast<X<X<X<int>>>>(x); // expected-error{{reinterpret_cast from}} | |
X<X<int>> *x1; | |
} | |