[PATCH] D15814: Implicit conversion from float->bool

Aaron Ballman via cfe-commits cfe-commits at lists.llvm.org
Wed Dec 30 06:34:48 PST 2015


aaron.ballman closed this revision.
aaron.ballman added a comment.

Thanks! I've commit in r256643.


================
Comment at: test/SemaCXX/warn-literal-conversion.cpp:49-50
@@ +48,4 @@
+  // values.
+  bool b3 = 0.0f;
+  bool b4 = 0.0;
+}
----------------
rsmith wrote:
> What about
> 
>   bool b5 = 1.0;
>   bool b6 = 2.0;
> 
> ? Arguably any `float` -> `bool` conversion changes the value (because `true` and `false` are not values of type `float`), so it wouldn't be completely unreasonable to warn even if the literal is `0.0`.
Except those conversions won't cause confusion to the user, so I'm not certain what we gain by diagnosing. Given that some mental models expect 0.99 to convert to 0, which converts to false (because bool is an integral type, so it "must" do the usual integral truncation dance), it makes sense to tell the user "no no no, that converts to true." I'm less convinced about the utility of warning on things like `bool b = 1.99f' where it changes the value from 1.99 to true. Perhaps this should be changed to only diagnose when converting through an integer would result in a different value that converting through the float?


http://reviews.llvm.org/D15814





More information about the cfe-commits mailing list