Boostのドキュメントの例で、このコードに出くわしました。
std::vector<int> input;
input += 1,2,3,4,5,6,7,8,9;
かわいいね。Boostには、ほとんどの状況でコンマが演算子であるという事実を利用するoperator+=のテンプレートがあります。(賢明なことに、C ++では、ハキストが「演算子」をオーバーロードすることはできません。)
私もかわいいコードを書くのが好きなので、コンマ演算子で遊んでみました。私には奇妙に見える何かを見つけました。次のコードは何を出力すると思いますか?
#include <iostream>
int main() {
int i;
i = 1,2;
std::cout << i << ' ';
i = (1,2);
std::cout << i << std::endl;
}
ご想像の通り。VC ++ 2012は「1、2」を出力します。どうしたの?
[編集:もっと正確にすべきだった。C ++では、intのリスト内の演算子「、」をオーバーロードすることはできません。または、さらに良いことに、何もありません。'、'演算子は、クラスと列挙型に対してオーバーロードできます。]