c++: Add test for DR 1423, Convertibility of nullptr to bool.
authorMarek Polacek <polacek@redhat.com>
Mon, 24 Feb 2020 17:56:00 +0000 (12:56 -0500)
committerMarek Polacek <polacek@redhat.com>
Wed, 26 Feb 2020 15:14:33 +0000 (10:14 -0500)
DR 1423, which supersedes DR 654, says that you can't copy-init
a bool from a std::nullptr_t:

  bool b = nullptr;  // error

Conversely, it works with direct-initialization which is more
permissive than copy-initialization.

No code changes necessary since we handle it right.

2020-02-26  Marek Polacek  <polacek@redhat.com>

DR 1423, Convertibility of nullptr to bool.
* g++.dg/DRs/dr1423.C: New test.

gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/DRs/dr1423.C [new file with mode: 0644]

index 4f46c385403161266fa7178ad60b7d831b6f4e32..a18b1f2ef890f38a3d95c213dfa7acf425795161 100644 (file)
@@ -1,3 +1,8 @@
+2020-02-26  Marek Polacek  <polacek@redhat.com>
+
+       DR 1423, Convertibility of nullptr to bool.
+       * g++.dg/DRs/dr1423.C: New test.
+
 2020-02-26  Marek Polacek  <polacek@redhat.com>
 
        PR c++/93803 - ICE with constexpr init and [[no_unique_address]].
diff --git a/gcc/testsuite/g++.dg/DRs/dr1423.C b/gcc/testsuite/g++.dg/DRs/dr1423.C
new file mode 100644 (file)
index 0000000..d82baae
--- /dev/null
@@ -0,0 +1,7 @@
+// DR 1423 - Convertibility of nullptr to bool.
+// { dg-do compile { target c++11 } }
+
+bool b = nullptr; // { dg-error "converting to .bool. from .std::nullptr_t. requires direct-initialization" }
+bool b2(nullptr);
+bool b3{nullptr};
+bool b4 = { nullptr }; // { dg-error "converting to .bool. from .std::nullptr_t. requires direct-initialization" }