std::is_string_literal
De es.cppreference.net
| Definido en el encabezado <meta>
|
||
consteval bool is_string_literal( const char* p );
|
(1) | (desde C++26) |
consteval bool is_string_literal( const wchar_t* p );
|
(2) | (desde C++26) |
consteval bool is_string_literal( const char8_t* p );
|
(3) | (desde C++26) |
consteval bool is_string_literal( const char16_t* p );
|
(4) | (desde C++26) |
consteval bool is_string_literal( const char32_t* p );
|
(5) | (desde C++26) |
Determina si p apunta a un elemento de un objeto literal de cadena.
El resultado se determina de la siguiente manera:
- Si
papunta a un objeto que no es utilizable en expresiones constantes, devuelvefalse. - De lo contrario, si
papunta a un subobjeto de un objeto literal de cadena, devuelvetrue. - De lo contrario, devuelve
false.
Parámetros
| p | - | un puntero a carácter |
Valor de retorno
true si p se determina estáticamente que apunta a un literal de cadena, false en caso contrario.
Ejemplo
Ejecutar este código
#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})"));
}
Véase también
(C++26) |
promueve la cadena en tiempo de compilación al almacenamiento estático, devolviendo un puntero al primer carácter de la cadena estática (plantilla de función) |