|| is guaranteed to be short-circuited in C++