Namespaces
Variants

std::meta::has_static_storage_duration, std::meta::has_thread_storage_duration, std::meta::has_automatic_storage_duration

cppreference.net에서
< cpp | meta
 
 
 
리플렉션 라이브러리
 
리플렉션 타입 및 쿼리
리플렉션 쿼리
리플렉션 레이아웃 쿼리
타입 속성
타입 속성 쿼리
 
다음 헤더에 정의됨 <meta>
consteval bool has_static_storage_duration( std::meta::info r );
(1) (since C++26)
consteval bool has_thread_storage_duration( std::meta::info r );
(2) (since C++26)
consteval bool has_automatic_storage_duration( std::meta::info r );
(3) (since C++26)

r가 지정된 저장 기간을 가진 객체 또는 변수인지 결정합니다.

1) true를 반환합니다. 만약 r이 정적 저장 기간을 가진 객체 또는 변수라면; 그렇지 않으면 false를 반환합니다.
2) true를 반환합니다. 만약 r이 스레드 저장 기간을 가진 변수라면; 그렇지 않으면 false를 반환합니다.
3) true를 반환합니다. 만약 r이 자동 저장 기간을 가진 변수라면; 그렇지 않으면 false를 반환합니다.

매개변수

r - 리플렉션 값

반환값

true만약 r가 나타내는 것이 지정된 저장 기간을 가지면; 그렇지 않으면 false입니다.

참고

r가 객체 또는 변수를 나타내지 않으면 결과는 false입니다.

예제

다음에서 미리보기 가능: Compiler Explorer.

#include <meta>

int a;
static_assert(std::meta::has_static_storage_duration(^^a));
static_assert(!std::meta::has_thread_storage_duration(^^a));
static_assert(!std::meta::has_automatic_storage_duration(^^a));

thread_local int b;
static_assert(!std::meta::has_static_storage_duration(^^b));
static_assert(std::meta::has_thread_storage_duration(^^b));
static_assert(!std::meta::has_automatic_storage_duration(^^b));

int main()
{
    [[maybe_unused]] int c;
    static_assert(!std::meta::has_static_storage_duration(^^c));
    static_assert(!std::meta::has_thread_storage_duration(^^c));
    static_assert(std::meta::has_automatic_storage_duration(^^c));
}

같이 보기

리플렉션된 엔터티가 링키지
를 가지는지 확인합니다.(함수)