今回は"Right angle bracket"(山括弧)。
そもそも">"って「山括弧」って日本語で言うんですね。
それはさておき、C++0x以前において、次のプログラム
std::vector<std::vector<int>> v; /* 最後の">>"が右シフトと解析される */ void func(std::vector<int>= v); /* ">="が比較演算子と解析される */
はエラーとなっていました。(理由はコメント参照)
しかし、C++0xでは上のコードは全てエラーとはなりません。
ただし次のコード
template <bool B> class Sample { … }; Sample<1>2> sample;
はエラーとなります。
なぜなら、今回は最も深くネストした開いた括弧が"<"だった場合、">"の次に">"や"="が続いても山括弧として扱われるため、次のように書かなければなりません。
Sample<(1>2)> sample; /* これならOK */
この記事をどの辺まで続けようか迷うこの頃ですが、自分が勉強したことを書くというスタンスで行けば、自分が勉強したところまでを書けばいいのかなとは思ってます。