C++でセミコロン無しの考察
javaセミコロン無しで注力されていたのは戻り値なしの関数をいかにして
if文に渡すかということであったのでC++ではどうするかというと、
if(doSomething(),false) {}
とすればいい。何の工夫もないけど。
もし
class SomeObject {
public:
void operator,(bool b) { /**/ }
};
SomeObject& doSomething() { return some_object; }
みたいな感じなら、
if(doSomething(),false,false) {}
とするまでさ、ひゃっはー。
追記:ちなみにNULL参照返すのは規格違反だぞ☆ミ
visual studio2008では、NULL参照が返ってもoperator,は呼べた。
でもその中でNULL参照に触ってしまったらがっつり怒られるんだろう。実行時に。
追記2:@cpp_akiraさんからoperator,がvoidで連鎖できないとコメントいただきました。
つまり
SomeObject& operator,(bool b);
と定義されてる場合。
ていうか一般的にoperator,は自分を返すだろうな。
ここでoperator boolが定義されてなかったり、boolでの暗黙の変換が出来ないと
","の連鎖によって、最後までboolで評価できない場合があるので
そのときは
if( &doSomething(),false,false,true/*連鎖...*/ ) {}
で評価できる。