1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 -fsyntax-only -std=c++98 -verify %s
23965b7be250de002d8744331631b9901941666a0Douglas Gregortemplate<typename T> struct X;
33965b7be250de002d8744331631b9901941666a0Douglas Gregortemplate<int I> struct Y;
43965b7be250de002d8744331631b9901941666a0Douglas Gregor
53965b7be250de002d8744331631b9901941666a0Douglas GregorX<X<int> > *x1;
63965b7be250de002d8744331631b9901941666a0Douglas GregorX<X<int>> *x2; // expected-error{{a space is required between consecutive right angle brackets (use '> >')}}
73965b7be250de002d8744331631b9901941666a0Douglas Gregor
83965b7be250de002d8744331631b9901941666a0Douglas GregorX<X<X<X<int>> // expected-error{{a space is required between consecutive right angle brackets (use '> >')}}
93965b7be250de002d8744331631b9901941666a0Douglas Gregor    >> *x3;   // expected-error{{a space is required between consecutive right angle brackets (use '> >')}}
103965b7be250de002d8744331631b9901941666a0Douglas Gregor
113965b7be250de002d8744331631b9901941666a0Douglas GregorY<(1 >> 2)> *y1;
12b3df1386680b3830d2f4d300d4d7eaba134135fcDouglas GregorY<1 >> 2> *y2; // expected-warning{{use of right-shift operator ('>>') in template argument will require parentheses in C++11}}
13