See, framing it as a personal preference makes much more sense. Of course disallowing nontrivial work in operators will also mean you can't concatenate strings in them, so you will have few languages to choose from.
For the first case, of course you can create something like:
str1.append(str2);
For the second... I don't know what to say.> framing it as a personal preference
But follow my logic for a moment: if "str3 = str1 + str2" concatenates a string, what "str3 = str1 - str2" should do?
(Yes I know there is no minus operator for std::string)
And "str3 = str1 * str2"?
And "str3 = str1 % str2"?