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

            Bug ID: 62182
           Summary: New warning wished: operator== and "equality
                    comparison result unused
                    [-Wunused-comparison]"/-Wunsed-value
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Keywords: diagnostic
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: burnus at gcc dot gnu.org
                CC: mpolacek at gcc dot gnu.org

For a simple:
  int i;
  i == 5;

GCC diagnoses (but warning is enabled not by default):
  warning: statement with no effect [-Wunused-value]
   i == 7;

CLANG does the same (warning enabled by default):
  warning: equality comparison result unused [-Wunused-comparison]
  i == 7;
  ~~^~~~
  note: use '=' to turn this equality comparison into an assignment
  i == 7;
    ^~
    =


However, in our code C++ code, we used an operator==. In that case, GCC doesn't
warn while Clang does (by default):

foo.cc:6:7: warning: equality comparison result unused [-Wunused-comparison]
  str == "bar";
  ~~~~^~~~~~~~
foo.cc:6:7: note: use '=' to turn this equality comparison into an assignment
  str == "bar";
      ^~
      =


C++ test case:

#include <stdio.h>
#include <string>

int main() {
  std::string str("init");
  str == "bar";
  printf("%s\n", str.c_str());
  return 0;
}

Reply via email to