On Darwin, the string header file isn't 64-bit clean. The use of

"-Wshorten-64-to-32 -Werror" will cause a failure when compiling this complex
program:

#include <string>

class Path {
  mutable std::string path;
public:
  bool operator == (const Path &that) {
    return path == that.path;
  }
};

Using strcmp gets us past this annoying error.

llvm-svn: 51218
This commit is contained in:
Bill Wendling 2008-05-17 09:10:40 +00:00
parent baa90d4eef
commit 568cd9c076

View File

@ -206,14 +206,14 @@ namespace sys {
/// @returns true if \p this and \p that refer to the same thing.
/// @brief Equality Operator
bool operator==(const Path &that) const {
return path == that.path;
return strcmp(path.c_str(), that.path.c_str()) == 0;
}
/// Compares \p this Path with \p that Path for inequality.
/// @returns true if \p this and \p that refer to different things.
/// @brief Inequality Operator
bool operator!=(const Path &that) const {
return path != that.path;
return strcmp(path.c_str(), that.path.c_str()) != 0;
}
/// Determines if \p this Path is less than \p that Path. This is required
@ -223,7 +223,7 @@ namespace sys {
/// @returns true if \p this path is lexicographically less than \p that.
/// @brief Less Than Operator
bool operator<(const Path& that) const {
return path < that.path;
return strcmp(path.c_str(), that.path.c_str()) < 0;
}
/// @}