else節のないifを式でやる

:の片側は適当な式で埋めたconditional-expressionでもいいんだけどこういうのもアリね。

#include <iostream>
 
struct hoge {
    void f() { 
        std::cout << "hoge\n";
    }
};
 
int main() {
    hoge x;
    false && ((void)x.f(), 0); // if (false) { x.f(); }
    std::cout << "-----------------\n";
    true || ((void)x.f(), 0); // Perl とかの unless 相当
}

結果:http://ideone.com/HJIbG
x.f()をvoidにキャストしてるのはx.f()の型がoperator,をオーバーロードしてるかもしれないからです。