Смотри в сторону std::string_view
constexpr std::array arr = { "str1"sv, "str2"sv, ... };
sv это же стрингвью
А почему не приставка s ?
std::string пока не умеет в constexpr создаваться
Вроде кстати в 20-м стандарте умеет
20 стандарт это пока будущее
Получается любой набор обьектов на этапе компиляции созадется constexpr array-ем ?
который может быть constexpr
Ну можно же поставить экспериментальную версию в студии).
Там не будет constexpr string
Стандарт умеет, но ни один компилятор не умеет
error: unable to find string literal operator ‘operator""sv’ with ‘const char [7]’, ‘long unsigned int’ arguments "asdasd"sv
Пиши std::string_view("stroka") вместо использования литералов
Собралось. Спасибо. А как это внутри работает? sv ведь не владеющая строка. На что она хранит указатель? на литерал?
Внутри строки запекаются прямо в asm, на годболте можешь посмотреть Реализовано думаю примерно так же как std::array
using namespace std::string_literals
using namespace std::string_view_literals; Сработало
Обсуждают сегодня