Concatena due valori letterali stringa

Sono molto nuovo alla programmazione e sto leggendo Accelerated C ++ di Koenig. Ad ogni modo, sto imparando le stringhe e scrive che “la nuova idea è che possiamo usare + per concatenare una stringa e una stringa letterale – o, peraltro, due stringhe (ma non due stringhe letterali).

Bene, questo ha senso, suppongo. Ora su due esercizi separati pensati per illuminare questo.

Sono valide le seguenti definizioni?

const string hello = "Hello"; const string message = hello + ",world" + "!"; 

Ora, ho provato a eseguire quanto sopra e ha funzionato! Quindi ero felice.

Poi ho provato a fare il prossimo esercizio;

 const string exclam = "!"; const string message = "Hello" + ",world" + exclam; 

Questo non ha funzionato. Ora capisco che abbia qualcosa a che fare con il fatto che non è ansible concatenare due stringhe letterali, ma non capisco la differenza semantica tra il motivo per cui sono riuscito a far funzionare il primo esempio (non è “, mondo” e “! “due stringhe letterali? Non è ansible che questo non abbia funzionato?) ma non il secondo.

Grazie!