Необработанные строковые литералы и кодификация файлов

C ++ 11 представилнеобработанные строковые литералы что может быть очень полезно для представления строк в кавычках, литералов с множеством специальных символов, таких как пути к файлам Windows, выражения регулярных выражений и т. д.

std::string path = R"(C:\teamwork\new_project\project1)"; // no tab nor newline!
std::string quoted = R"("quoted string")";
std::string expression = R"([\w]+[ ]+)";

Эти необработанные строковые литералы также можно комбинировать с префиксами кодирования (,,u8uU, или жеL), но, если префикс кодирования не указан, имеет ли значение кодировка файла?, давайте предположим, что у меня есть этот код:

auto message = R"(Pick up a card)";         // raw string 1
auto cards = R"()"; // raw string 2

Если я смогу написать и сохранить приведенный выше код, очевидно, что мой исходный код закодирован как Unicode, поэтому ямне интересно:

raw string 1 будет ли Unicode буквальным? (хотя он использует только символы ASCII), другими словами, необработанная строка наследует кодификацию файла, в котором написано, или компилятор автоматически определяет, что unicode isn 'Нужно ли независимо от кодировки файла?Нужен был бы префикс кодировкиU наraw string 2 для того, чтобы рассматривать его как литерал Юникода, или он будет автоматически в Юникоде из-за его содержимого и / или кодировки исходного файла?

Спасибо за внимание.

РЕДАКТИРОВАТЬ:

Тестирование приведенного выше кода на ideone.com и распечаткаmessage а такжеcards переменные, это выводит:char const*

template std::string demangle(T t)
{
    int status;
    char *const name = abi::__cxa_demangle(typeid(T).name(), 0, 0, &status);
    std::string result(name);
    free(name);
    return result;
}

int main()
{
    auto message = R"(Pick up a card)";
    auto cards = R"()";

    std::cout
        < "message type: " < demangle(message) < '\n'
        < "cards type: " < demangle(cards) < '\n';

    return 0;
}

Ответы на вопрос(2)

Ваш ответ на вопрос