[cfe-dev] -fsanitize=enum false positive with ˜ios::failbit ?

Brad King brad.king at kitware.com
Thu Feb 28 12:40:55 PST 2013

On 02/28/2013 03:33 PM, Joe Groff wrote:
> On Thu, Feb 28, 2013 at 11:36 AM, Sean McBride wrote:
>> The C++03 standard does "~ios::failbit" in
> Enum values are only defined for the number of bits needed to
> represent the type's member values, so if 'x' is a defined iostate
> value, then 'x & ~ios::failbit' results in a valid iostate value,
> but ~ios::failbit is not itself a valid iostate value.

The question is actually about the expression from C++03

 cin.clear(cin.rdstate() & ~ios::failbit);

C++03 27.4.2 defines iostate and failbit:

 typedef T2 iostate;
 static const iostate failbit;

C++03 requires iostate to be a bitmask type:

 The type iostate is a bitmask type (

C++03 requires bitmask types to support ~:

 bitmask operator ~(bitmask X)


More information about the cfe-dev mailing list