与 C++ 中的空字符串相比,变异是否存在?

Mutation Survives When Comparing to Empty String in C++?

我正在修改我的代码,它抱怨以下修改幸存:

--- /home/user/src/file.cc 2019-12-03 13:48:12.510311
+++ /home/user/src/file.cc 2019-12-03 14:00:14.164006
@@ -283,7 +283,7 @@
 }

 bool SomeClass::isValid(proto::SomeProto const& task_pb) const {
-    if (task_pb.task_id() == "") {
+    if (task_pb.task_id() < "") {
         log(LOG_WARNING, "no id given");
         return false;
     } else if (task_pb.task_type() == proto::TaskType::UNKNOWN) {

task_id() 的声明是:

const ::std::string& task_id() const;

有没有可以小于""string?这甚至会被认为是 strings 的有效突变吗?

std::string定义了一个字典序"less-than"关系,可以访问using operator<.

您显示的特定表达式的计算结果将始终为 false,因为没有字符串排序(按字典顺序)小于空字符串。但这并不会使代码无效,只是毫无意义。我不知道你所说的 "valid mutation" 到底是什么意思,但希望这会为你指明答案。