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})"));
}
См. также
|
(C++26) | преобразует строку времени компиляции в строку со статической длительностью хранения, возвращая указатель на первый символ статической строки (шаблон функции) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/meta/is_string_literal