C++ Logo

STD-PROPOSALS

Advanced search

Subject: Re: [std-proposals] Prevent Assignments from contextually converting to bool
From: Brian Bi (bbi5291_at_[hidden])
Date: 2019-10-23 11:43:45


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*


STD-PROPOSALS list run by std-proposals-owner@lists.isocpp.org

Standard Proposals Archives on Google Groups