Why doesn't c++ have &&= or ||= for booleans? -


is there "very bad thing" can happen &&= , ||= used syntactic sugar bool foo = foo && bar , bool foo = foo || bar?

a bool may true or false in c++. such, using &= , |= safe (even though don’t particularly notation). true, will perform bit operations rather logical operations (and such, won’t short-circuit) these bit operations follow well-defined mapping, equivalent logical operations, as long as both operands are indeed of type bool.1

contrary other people have said here, bool in c++ must never have different value such 2. when assigning value bool, converted true per standard.

the way invalid value bool using reinterpret_cast on pointers:

int = 2; bool b = *reinterpret_cast<bool*>(&i); b |= true; // may yield 3 (but doesn’t on pc!) 

but since code results in undefined behaviour anyway, may safely ignore potential problem in conforming c++ code.


1 admittedly rather big caveat angew’s comment illustrates:

bool b = true; b &= 2; // yields `false`. 

the reason b & 2 performs integer promotion such expression equivalent static_cast<int>(b) & 2, results in 0, converted bool. it’s true existence of operator &&= improve type safety.


Comments

Popular posts from this blog

aws api gateway - SerializationException in posting new Records via Dynamodb Proxy Service in API -

asp.net - Problems sending emails from forum -