Namespaces
Variants

std::is_string_literal

출처: ko.cppreference.net
< cpp | meta
 
 
 
리플렉션 라이브러리
 
리플렉션 타입 및 쿼리
리플렉션 쿼리
리플렉션 레이아웃 쿼리
타입 속성
타입 속성 쿼리
 
헤더에 정의됨 <meta>
consteval bool is_string_literal( const char* p );
(1) (since C++26)
consteval bool is_string_literal( const wchar_t* p );
(2) (since C++26)
consteval bool is_string_literal( const char8_t* p );
(3) (since C++26)
consteval bool is_string_literal( const char16_t* p );
(4) (since C++26)
consteval bool is_string_literal( const char32_t* p );
(5) (since 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})"));
}

참고 항목

컴파일 타임 문자열을 정적 저장소로 승격하고, 정적 문자열의 첫 번째 문자를 가리키는 포인터를 반환합니다.
(함수 템플릿)