However, we could equally just set the n'th bit in the result, like this:

cpp_intb2(unsignedn){cpp_intr(0);return--bit_set(r,n);}

Note how the bit_set
function sets the specified bit in its argument and then returns a reference
to the result - which we can then simply decrement. The result from a
call to b2 is the same
as that to b1.

We can equally test bits, so for example the n'th bit of the result returned
from b2 shouldn't be
set unless we increment it first: