gamesh411 added a comment.

In D150647#4345345 <https://reviews.llvm.org/D150647#4345345>, @steakhal wrote:

>> In C++17 the initialization rules for enum classes are relaxed.
>
> In what way are they relaxed compared to regular enums?

The initialization rules are relaxed compared to their pre-C++17 state, so now 
there is a possibility of an initialization for enum classes without explicitly 
mentioning the underlying type.
I have updated the revision body.

That all being said, there is another fundamental issue with this checker, 
namely that the possible value range is I think restricted to the ones 
explicitly mentioned in the enumerators.
For example in the std::byte case even the old way of initializing gives a 
false positive.
I am investigating the issue, and have found so far, that fixed 
underlying-typed and non-fixed underlying-typed enums behave differently, which 
is not considered in the checker code.

Relevant info dump for future quoting:
https://eel.is/c++draft/dcl.enum#5
https://eel.is/c++draft/dcl.enum#7
https://eel.is/c++draft/dcl.enum#8
https://eel.is/c++draft/expr.static.cast#10
https://eel.is/c++draft/conv.fpint


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D150647/new/

https://reviews.llvm.org/D150647

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to