https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88738

            Bug ID: 88738
           Summary: treat shared_ptr and unique_ptr more like plain old
                    pointers
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: drepper.fsp+rhbz at gmail dot com
  Target Milestone: ---

The implementations are obviously more complicated but the warning handling the
current implementation allows is less than optimal.  For the test case below
gcc (8.2.1, current trunk) doesn't emit any warning, even with -Wall.  clang on
the other hand reports

$ clang++ -c -O -Wall -g v.cc -std=gnu++17
v.cc:8:9: warning: equality comparison result unused [-Wunused-comparison]
    res == nullptr;
    ~~~~^~~~~~~~~~
v.cc:8:9: note: use '=' to turn this equality comparison into an assignment
    res == nullptr;
        ^~
        =


Test (compile with -std=c++17):

#include <memory>

using type = std::shared_ptr<int>;

type f(int a) {
  auto res = std::make_shared<int>(3);
  if (a == 0)
    res == nullptr;   // <- obviously incorrect
  return res;
}

Reply via email to