http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56373
Bug #: 56373 Summary: -Wzero-as-null-pointer-constant: does not catch issues with smart pointers Classification: Unclassified Product: gcc Version: 4.8.0 Status: UNCONFIRMED Severity: minor Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: akim.demai...@gmail.com Hi all, Sorry if this report is bogus. I would expect GCC to complain about the following uses of 0 instead of nullptr, but it does not. $ cat foo.cc #include <memory> struct foo {}; int main () { std::shared_ptr<foo> a = 0; std::shared_ptr<foo> b(0); std::shared_ptr<foo> c{0}; foo *d = 0; } $ g++-mp-4.8 -std=c++11 -Wall -Wzero-as-null-pointer-constant /tmp/foo.cc /tmp/foo.cc: In function 'int main()': /tmp/foo.cc:9:12: warning: zero as null pointer constant [-Wzero-as-null-pointer-constant] foo *d = 0; ^ /tmp/foo.cc:9:8: warning: unused variable 'd' [-Wunused-variable] foo *d = 0; ^ $ g++-mp-4.8 --version g++-mp-4.8 (MacPorts gcc48 4.8-20130210_0) 4.8.0 20130210 (experimental) Copyright (C) 2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. It's also a bit sad that only d is diagnosed as useless, although I do understand that the shared_ptr has a constructor and a destructor that use it. Cheers!