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})"));
}
Смотри также
(C++26) |
преобразует строку времени компиляции в статическое хранилище, возвращая указатель на первый символ статической строки (шаблон функции) |