Namespaces
Variants

std::is_string_literal

Из ru.cppreference.net
 
 
 
Библиотека рефлексии
Запросы доступности членов
Идентификация области видимости
Запросы членов рефлексии
Рефлексия аннотаций
Извлечение значений
Подстановка рефлексии
Рефлексия результатов выражений
Генерация определений классов

Основные категории типов
Составные категории типов
Свойства типов ➜
Отношения типов
 
Типы и запросы рефлексии
Запросы рефлексии
Запросы расположения рефлексии
Свойства типов
Запросы свойств типов
 
Определён в заголовке <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 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})"));
}

Смотри также

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