summaryrefslogtreecommitdiff
path: root/src/mongo/base
diff options
context:
space:
mode:
authorMathias Stearn <redbeard0531@gmail.com>2022-03-16 11:04:03 +0100
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-03-18 16:21:43 +0000
commitff9ab764ccd4249dc929858a02d88a0e1cac16fd (patch)
tree8e53f55843b82d6618289b39d05e48f9ecbecf82 /src/mongo/base
parent9c83f3aabd24f31a9a6bf42b979483a7b18ffddc (diff)
downloadmongo-ff9ab764ccd4249dc929858a02d88a0e1cac16fd.tar.gz
SERVER-54352 std::string += StringData
Diffstat (limited to 'src/mongo/base')
-rw-r--r--src/mongo/base/string_data.h6
-rw-r--r--src/mongo/base/string_data_test.cpp7
2 files changed, 13 insertions, 0 deletions
diff --git a/src/mongo/base/string_data.h b/src/mongo/base/string_data.h
index 10c6758689e..c040c98cfb5 100644
--- a/src/mongo/base/string_data.h
+++ b/src/mongo/base/string_data.h
@@ -321,6 +321,12 @@ inline bool StringData::endsWith(StringData suffix) const {
return substr(thisSize - suffixSize) == suffix;
}
+inline std::string& operator+=(std::string& lhs, StringData rhs) {
+ if (!rhs.empty())
+ lhs.append(rhs.rawData(), rhs.size());
+ return lhs;
+}
+
inline std::string operator+(std::string lhs, StringData rhs) {
if (!rhs.empty())
lhs.append(rhs.rawData(), rhs.size());
diff --git a/src/mongo/base/string_data_test.cpp b/src/mongo/base/string_data_test.cpp
index c31d376c5b4..a809ddf8f95 100644
--- a/src/mongo/base/string_data_test.cpp
+++ b/src/mongo/base/string_data_test.cpp
@@ -448,5 +448,12 @@ TEST(Ostream, StringDataMatchesStdString) {
}
}
+TEST(StringData, PlusEq) {
+ auto str = std::string("hello ");
+ auto& ret = str += "world"_sd;
+ ASSERT_EQ(str, "hello world");
+ ASSERT_EQ(&ret, &str);
+}
+
} // namespace
} // namespace mongo