Q:

String initialization fails: "expression must have integral or unscoped enum type"

I have two diffrent samples:
std::string* to_return = new std::string("I love"  + _name + " so much!");

And:
std::string* to_return = new std::string("I love"  + "Martin" + " so much!");

The first sample, illustrates initialization when trying to add another simple string object named "_name".
At the secons example, I just connect three differents strings...
The Error appear when trying to make the second sample:

expression must have integral or unscoped enum type

A:

"I love"  + _name + " so much!" evaluates to a std::string since that class contains overloaded + operators to const char* on both sides, and _name is a std::string instance.
But the compiler cannot use any overloaded + for "I love"  + "Martin" + " so much!" as these are simply built-int const char[] literals for which + is invalid, so compilation fails.
std::string() + "I love"  + "Martin" + " so much!", however would work, as would resorting to C-style compile-time concatenation:
std::string("I love" "Martin" " so much!");

Finally, Martin might appreciate the message even more if there was a space after "love".

