Namespaces
Variants

std:: is_implicit_lifetime

From cppreference.net
Metaprogramming library
Type traits
Type categories
(C++11)
(C++11) ( DR* )
Type properties
(C++11)
(C++11)
(C++14)
is_implicit_lifetime
(C++23)
(C++11) (deprecated in C++26)
(C++11) ( until C++20* )
(C++11) (deprecated in C++20)
(C++11)
Type trait constants
Metafunctions
(C++17)
Supported operations
Relationships and property queries
Type modifications
Type transformations
(C++11) (deprecated in C++23)
(C++11) (deprecated in C++23)
(C++11)
(C++11) ( until C++20* ) (C++17)

Compile-time rational arithmetic
Compile-time integer sequences
헤더에 정의됨 <type_traits>
template < class T >
struct is_implicit_lifetime ;
(C++23부터)

std::is_implicit_lifetime UnaryTypeTrait 입니다.

만약 T implicit-lifetime type 인 경우, 멤버 상수 value true 로 제공합니다. 다른 모든 타입에 대해서는 value false 입니다.

동작은 다음의 경우에 정의되지 않습니다: T 가 배열 타입이나 (cv 한정자가 있을 수 있는) void 를 제외한 불완전한 타입인 경우.

프로그램이 std::is_implicit_lifetime 또는 std::is_implicit_lifetime_v 에 대한 특수화를 추가하는 경우, 그 동작은 정의되지 않습니다.

목차

템플릿 매개변수

T - 확인할 타입

헬퍼 변수 템플릿

template < class T >
constexpr bool is_implicit_lifetime_v = is_implicit_lifetime < T > :: value ;
(C++23 이후)

std:: integral_constant 로부터 상속됨

멤버 상수

value
[static]
true 만약 T 가 implicit-lifetime 타입이면, false 그렇지 않으면
(public static member constant)

멤버 함수

operator bool
객체를 bool 로 변환, value 반환
(public member function)
operator()
(C++14)
value 반환
(public member function)

멤버 타입

타입 정의
value_type bool
type std:: integral_constant < bool , value >

참고 사항

기능 테스트 매크로 표준 기능
__cpp_lib_is_implicit_lifetime 202302L (C++23) std::is_implicit_lifetime

예제

// 다음 타입들을 통칭하여 암시적 수명 타입이라고 합니다:
// * 스칼라 타입:
//     * 산술 타입
//     * 열거형 타입
//     * 포인터 타입
//     * 멤버 포인터 타입
//     * std::nullptr_t
// * 암시적 수명 클래스 타입
//     * 사용자 제공 소멸자가 없는 집계 타입
//     * 적어도 하나의 trivial 적격 생성자와 trivial,
//       삭제되지 않은 소멸자를 가짐
// * 배열 타입
// * 이러한 타입들의 cv-한정 버전
#include <type_traits>
static_assert(std::is_implicit_lifetime_v<int>); // 산술 타입은 스칼라 타입
static_assert(std::is_implicit_lifetime_v<const int>); // cv-한정된 스칼라 타입
enum E { e };
static_assert(std::is_implicit_lifetime_v<E>); // 열거형 타입은 스칼라 타입
static_assert(std::is_implicit_lifetime_v<int*>); // 포인터 타입은 스칼라 타입
static_assert(std::is_implicit_lifetime_v<std::nullptr_t>); // 스칼라 타입
struct S { int x, y; };
// S는 암시적 수명 클래스: 사용자 제공 소멸자가 없는 집계 타입
static_assert(std::is_implicit_lifetime_v<S>);
static_assert(std::is_implicit_lifetime_v<int S::*>); // 멤버 포인터
struct X { ~X() = delete; };
// X는 삭제된 소멸자로 인해 암시적 수명 클래스가 아님
static_assert(!std::is_implicit_lifetime_v<X>);
static_assert(std::is_implicit_lifetime_v<int[8]>); // 배열 타입
static_assert(std::is_implicit_lifetime_v<volatile int[8]>); // cv-한정된 배열 타입
int main() {}

참고 항목

(C++11)
타입이 스칼라 타입인지 확인합니다
(클래스 템플릿)
(C++11)
타입이 배열 타입인지 확인합니다
(클래스 템플릿)
타입이 집합체(aggregate) 타입인지 확인합니다
(클래스 템플릿)
주어진 저장소에서 객체 표현을 재사용하여 객체를 암시적으로 생성합니다
(함수 템플릿)