From 9d8f433246088baeb878050f3022a6a738db526c Mon Sep 17 00:00:00 2001 From: Rebecca Turner Date: Sun, 1 Sep 2024 15:10:31 -0700 Subject: [PATCH] Expand comment on `std::string operator+` Nuts! Change-Id: Ib5bc0606d7c86e57ef76dd7bcc89dce91bd3d50a --- src/libutil/strings.hh | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/libutil/strings.hh b/src/libutil/strings.hh index ebafab9ad..782807b61 100644 --- a/src/libutil/strings.hh +++ b/src/libutil/strings.hh @@ -200,8 +200,18 @@ std::string showBytes(uint64_t bytes); /** - * Provide an addition operator between strings and string_views + * Provide an addition operator between `std::string` and `std::string_view` * inexplicably omitted from the standard library. + * + * > The reason for this is given in n3512 string_ref: a non-owning reference + * to a string, revision 2 by Jeffrey Yasskin: + * > + * > > I also omitted operator+(basic_string, basic_string_ref) because LLVM + * > > returns a lightweight object from this overload and only performs the + * > > concatenation lazily. If we define this overload, we'll have a hard time + * > > introducing that lightweight concatenation later. + * + * See: https://stackoverflow.com/a/47735624 */ inline std::string operator + (const std::string & s1, std::string_view s2) {