ネタ元 → [C++]proxy の null チェック
同様のテクニック(?)にこんなのあるます。
// 二分木の節
class binary_node {
binary_node* left; // 左の枝
binary_node* right; // 右の枝
int value;
int sum(); // 一族の総和
...
};
int binary_node::sum() {
int result = value;
if ( left ) result += left->sum();
if ( right ) result += right->sum();
return result;
}
thisが0であることを認めれば:
int binary_node::sum() {
return ( this == 0 ) ? 0 : value + left->sum() + right->sum();
}