Почему в C ++ избегаются обратные косые черты в строковых литералах?

Я хочу объявить один и тот же шаблон регулярного выражения для обоих языков. Для TCL я делаю это

set pattern "\d\s\S" 

но для C ++ я должен сделать это для одного шаблона

 boost::regex pattern("\\d\\s\\S"); 

иначе компилятор C ++ скажет нам следующее:

 warning C4129: 'd' : unrecognized character escape sequence 

поэтому почему TCL не пытается найти escape-символы \ d \ s \ S и просто игнорирует \ -s, но C ++ пытается и отстой?

PS PHP работает как TCL, как я помню.

    Это как раз то, как отличаются C ++ и PHP; в PHP символ, следующий за "rnvtx" сопоставляется с небольшим набором специальных символов (я считаю, "rnvtx" ). Если совпадение не удастся, оно будет продолжаться без изменения значения.

    Однако C ++ ожидает, что персонаж будет в этом маленьком наборе (я думаю, что набор больше btw), но если совпадение не получится, вы увидите ошибку.

    C ++ имеет концепцию последовательности Escape Escape . Последовательности Escape, которые принимают форму \c («c», являющийся символом), используются для определения определенных специальных символов в строковых литералах, поэтому следует, что обратные косые черты сами по себе также должны быть экранированы, чтобы обозначить, что особый символ не является подразумевается.