C++ Logo

std-proposals

Advanced search

Re: Prevent Assignments from contextually converting to bool

From: Brian Bi <bbi5291_at_[hidden]>
Date: Wed, 23 Oct 2019 11:43:45 -0500
On Wed, Oct 23, 2019 at 11:35 AM connor horman via Std-Proposals <
std-proposals_at_[hidden]> 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_at_[hidden]
> 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*

Received on 2019-10-23 11:46:12