Получение подстроки в constexpr-функции

Как написать constexpr-функцию, которая из строки возвращает произвольную подстроку?

Пусть, для упрощения, нужно получить первые 3 символа

constexpr char * get_first_chars(const char * str, inc count) {
  .......
}

const char * get_first_chars("abcdef", 3);

Последние символы вернуть без проблем. А первые? Вставить в строку \0 нельзя

Можно заменить char* на std::string, но std::string не разрешается использовать в constexpr-функциях


Ответы (1 шт):

Автор решения: HolyBlackCat

Озвученную проблему [string_view] решает, но мне бы еще конкатенацию

Это делается примерно вот так:

constexpr std::size_t size = [&]{
    std::size_t size = 0;
    // Тут считаете size. Лямбда не обязательна, если можете без нее - убирайте.
    return size;
}();

constexpr std::array<char, size> str = []{
    std::array<char, size> str{};
    // Тут руками собираете строку в `str`.
    return str;
}();
→ Ссылка