Namespaces
Variants

std::is_string_literal

Von de.cppreference.net
< cpp | meta
 
 
 
Reflexionsbibliothek
 
Reflexionstypen und -abfragen
Reflexionsabfragen
Reflexionslayoutabfragen
Typeigenschaften
Typeigenschaftsabfragen
 
Definiert im Header <meta>
consteval bool is_string_literal( const char* p );
(1) (seit C++26)
consteval bool is_string_literal( const wchar_t* p );
(2) (seit C++26)
consteval bool is_string_literal( const char8_t* p );
(3) (seit C++26)
consteval bool is_string_literal( const char16_t* p );
(4) (seit C++26)
consteval bool is_string_literal( const char32_t* p );
(5) (seit C++26)

Ermittelt, ob p auf ein Element eines String-Literal-Objekts zeigt.

Das Ergebnis wird wie folgt ermittelt:

  • Falls p auf ein Objekt zeigt, das in konstanten Ausdrücken nicht verwendbar ist, wird false zurückgegeben.
  • Andernfalls, falls p auf ein Unterobjekt eines String-Literal-Objekts zeigt, wird true zurückgegeben.
  • Andernfalls wird false zurückgegeben.

Parameter

p - ein Zeiger auf ein Zeichen

Rückgabewert

true falls p statisch als in ein String-Literal zeigend bestimmt wird, false andernfalls.

Beispiel

#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})"));
}

Siehe auch

befördert eine Compile-Zeit-Zeichenkette in den statischen Speicher und gibt einen Zeiger auf das erste Zeichen der statischen Zeichenkette zurück
(Funktionsschablone)