読者です 読者をやめる 読者になる 読者になる

C++0xの機能 (山括弧)

今回は"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 */


この記事をどの辺まで続けようか迷うこの頃ですが、自分が勉強したことを書くというスタンスで行けば、自分が勉強したところまでを書けばいいのかなとは思ってます。

広告を非表示にする