Explicitly construct a `string_piece` when comparing to `char*` In C++20, `operator==` candidates include rewritten candidates with reversed operand order, so this function creates infinite recursion just flipping operands back and forth. In C++17, it relies on implicit construction of a `string_piece`. This is backwards and forwards compatible.
diff --git a/libshaderc_util/include/libshaderc_util/string_piece.h b/libshaderc_util/include/libshaderc_util/string_piece.h index 89049d9..8d334df 100644 --- a/libshaderc_util/include/libshaderc_util/string_piece.h +++ b/libshaderc_util/include/libshaderc_util/string_piece.h
@@ -332,7 +332,7 @@ } inline bool operator==(const char* first, const string_piece second) { - return second == first; + return second == string_piece(first); } inline bool operator!=(const char* first, const string_piece second) {