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. Tested on x86_64-linux, ok for trunk? 2020-02-24 Marek Polacek <pola...@redhat.com> DR 1423, Convertibility of nullptr to bool. * g++.dg/DRs/dr1423.C: New test. --- gcc/testsuite/g++.dg/DRs/dr1423.C | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 gcc/testsuite/g++.dg/DRs/dr1423.C diff --git a/gcc/testsuite/g++.dg/DRs/dr1423.C b/gcc/testsuite/g++.dg/DRs/dr1423.C new file mode 100644 index 00000000000..d82baae9985 --- /dev/null +++ b/gcc/testsuite/g++.dg/DRs/dr1423.C @@ -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" } base-commit: a4dbb9b25a60143c699de55cd6226cebeb3b3c3e -- Marek Polacek • Red Hat, Inc. • 300 A St, Boston, MA