Unary plus (+) przeciwko literałowi

Dzisiaj napisałem wyrażenie:

"<" + message_id + "@" +  + ">"

i zdziwiłem się, że rzeczywiście się skompilował. (PSmessage_id jest QStringiem, działałby również ze std :: string)

Często robię takie rzeczy, pomijam zmienną podczas pracy i oczekuję, że kompilator powie mi, gdzie nadal brakuje wpisów. Finał wyglądałby mniej więcej tak:

"<" + message_id + "@" + network_domain + ">"

Teraz chciałbym wiedzieć, dlaczego operator + unary jest poprawny wobec literału łańcuchowego !?

questionAnswers(1)

yourAnswerToTheQuestion