Index: g++.dg/cpp0x/bracket1.C =================================================================== --- g++.dg/cpp0x/bracket1.C (revision 0) +++ g++.dg/cpp0x/bracket1.C (revision 0) @@ -0,0 +1,16 @@ +// { dg-do "compile" } +// { dg-options "-std=gnu++0x" } + +template +struct list {}; + +template +struct vector { + operator T() const; +}; + +void f() +{ + vector> v; + const vector vi = static_cast>(v); +} Index: g++.dg/cpp0x/bracket2.C =================================================================== --- g++.dg/cpp0x/bracket2.C (revision 0) +++ g++.dg/cpp0x/bracket2.C (revision 0) @@ -0,0 +1,11 @@ +// { dg-do "compile" } +// { dg-options "-std=gnu++0x" } + +template class X { /* ... */ }; +X< 1>2 > x1; // // { dg-error "numeric constant" } +X<(1>2)> x2; // Okay. + +template class Y { /* ... */ }; +Y> x3; // Okay, same as "Y > x3;". +Y>1>> x4; // { dg-error "numeric constant" } +Y>1)>> x5; // Okay Index: g++.dg/cpp0x/bracket3.C =================================================================== --- g++.dg/cpp0x/bracket3.C (revision 0) +++ g++.dg/cpp0x/bracket3.C (revision 0) @@ -0,0 +1,5 @@ +// { dg-options "-std=c++98 -Wc++0x-compat" } + +template struct X {}; + +X<1 >> 2> x; // { dg-warning "will be treated as|suggest parentheses" }