If sizeof(bool) == 1 then passing by value is efficient since bool fits in a register (assuming some standard calling convention). However sizeof(bool) is implementation defined. So is bool always guaranteed to be more efficient when passed by value rather than by reference? Are there any guarantees on upper bounds on sizeof(bool)?