これはC++ 11で合法ですか?
string s = R"(This is the first line
And this is the second line)";
...と同等です:
string s = "This is the first line\nAnd this is the second line";
はい、それは完全に有効です。 こちら を参照してください。
また、(ドラフト)標準2.14.5/4から:
生の文字列リテラルのソースファイルの改行は、結果の実行で改行になりますstring-literal。次の例の行の先頭に空白がないと仮定すると、アサートは成功します。
const char *p = R"(a\ b c)"; assert(std::strcmp(p, "a\\\nb\nc") == 0);