On Wed, Oct 23, 2019 at 11:35 AM connor horman via Std-Proposals <std-proposals@lists.isocpp.org> wrote:
This is my proposed to solution to one of the worst logic errors in any number of languages, being:
if(i=0)
vs.
if(i==0)

The proposal is to tweak the wording of contextual conversions to bool, prohibiting unparenthesised assignments from being eligible for contextual conversion. Code that intends to do this can simply put parenthesis around the assignment or use an init-statement, and code that does this without intention (i.e. intends the comparison) would be elevated from a logic error (the worst kind honestly) to a compile-time error.
--
Std-Proposals mailing list
Std-Proposals@lists.isocpp.org
https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals

You can achieve this effect using compiler warnings. For example, with GCC and Clang, you can use the flag -Werror=parentheses to treat this as an error.

I do not think we should add more rules to the language that discriminate among expressions on the basis of properties other than their type and value category.

--
Brian Bi