Namespaces
Variants

std::is_string_literal

De es.cppreference.net
< cpp | meta
 
 
 
Biblioteca de reflexión
 
Tipos y consultas de reflexión
Consultas de reflexión
Consultas de diseño de reflexión
Propiedades de tipo
Consultas de propiedad de tipo
 
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 p apunta a un objeto que no es utilizable en expresiones constantes, devuelve false.
  • De lo contrario, si p apunta a un subobjeto de un objeto literal de cadena, devuelve true.
  • 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

#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

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)