C++: Why is 'operator+=' defined but not 'operator+' for strings?

c++, c++11, operators, string

Solution

You need to convert one of the raw string literals to `std::string` explicitly. You can do it like others already mentioned:

second = std::string("abc") + "def";

or with C++14, you will be able to use

using namespace std::literals;
second = "abc"s + "def";
// note       ^

Problem

How come `operator+=` is defined for `std::string` but `operator+` is not defined? See my MWE below (http://ideone.com/OWQsJk). ``` #include <iostream> #include <string> using namespace std; int main() { string first; first = "Day"; first += "number"; cout << "\nfirst = " << first << endl; string second; //second = "abc" + "def"; // This won't compile cout << "\nsecond = " << second << endl; return 0; } ```

Original source

Related problems