Spec-Zone.ru › C++

std::is_string_literal

Определён в заголовке <meta>
consteval bool is_string_literal( const char* p );
(1) (начиная с C++26)
consteval bool is_string_literal( const wchar_t* p );
(2) (начиная с C++26)
consteval bool is_string_literal( const char8_t* p );
(3) (начиная с C++26)
consteval bool is_string_literal( const char16_t* p );
(4) (начиная с C++26)
consteval bool is_string_literal( const char32_t* p );
(5) (начиная с C++26)

Определяет, указывает ли p на элемент объекта строкового литерала.

Результат определяется следующим образом:

  • Если p указывает на объект, который нельзя использовать в константных выражениях, возвращает false.
  • В противном случае, если p указывает на подобъект объекта строкового литерала, возвращает true.
  • В противном случае возвращает false.

Параметры

p - указатель на символ

Возвращаемое значение

true, если статически определено, что p указывает внутрь строкового литерала; в противном случае — false.

Пример

#include <meta>

int main()
{
    constexpr const char* p = "";
    constexpr const char a[] = "";

    static_assert(std::is_string_literal(p));
    static_assert(!std::is_string_literal(a));
    static_assert(std::is_string_literal(LR"(wcahr_t)"));
    static_assert(std::is_string_literal(R"(\N{CAT})"));
}

См. также

define_static_string
(C++26)
преобразует строку времени компиляции в строку со статической длительностью хранения, возвращая указатель на первый символ статической строки
(шаблон функции)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/meta/is_string_literal

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API