Каков оптимальный способ определения глобальной константной строки в C++20?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Каков оптимальный способ определения глобальной константной строки в C++20?

Сообщение Anonymous »

Мне нужно определить несколько константных строк, которые будут использоваться во всем проекте C++20.
Я рассматриваю следующие варианты:

Код: Выделить всё

constexpr char[] str1 = "foo";
constexpr std::string str2 = "foo";
constexpr std::string_view str3 = "foo";
но я сомневаюсь, какой из них выбрать.

Код: Выделить всё

constexpr char[]
эффективен, но не является современным C++.

Код: Выделить всё

constexpr std::string
— это современный C++, и он использует тот факт, что «поскольку C++20 std::string является классом constexpr для выполнения операций во время компиляции», но даже в этом случае я слышал, что он все равно использует динамическое выделение, поэтому это может быть не лучший вариант.

Код: Выделить всё

constexpr std::string_view
, вероятно, является оптимальным выбором, но я проверил несколько ресурсов, включая Professional C++ (5th Edition) Марка Грегуара, и не нашел четких указаний, что это рекомендуемый способ определения глобальных константных строк. Я только что прочитал, что лучше всего передать в функцию строку, доступную только для чтения (по сравнению с передачей const std::string& или const char*).
Итак, какой метод подходит для C++20?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ing-in-c20
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»