Spec-Zone.ru › C++

std::meta::is_implicit_lifetime_type

Определён в заголовочном файле <meta>
consteval bool is_implicit_lifetime_type( std::meta::info r );
(начиная с C++26)

Возвращает true, если r представляет собой тип времени жизни с неявным созданием объектов. В противном случае возвращает false.

Параметры

r - значение отражения

Возвращаемое значение

true, если r представляет собой тип времени жизни с неявным созданием объектов; в противном случае false.

Исключения

Выбрасывает std::meta::exception, если r не представляет тип или псевдоним типа.

Пример

#include <cstddef>
#include <meta>

enum E { e };

struct S
{
    int x, y;
};

struct X
{
    X() {}
    ~X() = delete;
};

static_assert
(""
    and is_implicit_lifetime_type(^^int)            // arithmetic type is a scalar type
    and is_implicit_lifetime_type(^^const int)      // cv-qualified scalar type
    and is_implicit_lifetime_type(^^E)              // enumeration type is a scalar type
    and is_implicit_lifetime_type(^^int*)           // pointer type is a scalar type
    and is_implicit_lifetime_type(^^std::nullptr_t) // scalar type
    
    // S is an implicit-lifetime class: an aggregate without user-provided destructor
    and is_implicit_lifetime_type(^^S)
    
    and is_implicit_lifetime_type(^^int S::*) // pointer-to-member

    // X is not implicit-lifetime class due to deleted destructor
    and not is_implicit_lifetime_type(^^X)

    and is_implicit_lifetime_type(^^int[8])          // array type
    and is_implicit_lifetime_type(^^volatile int[8]) // cv-qualified array type
);

int main() {}

См. также

is_scalar_type
(C++26)
проверяет, является ли отражённый тип скалярным типом
(функция)
is_array_type
(C++26)
проверяет, является ли отражённый тип типом массива
(функция)
is_aggregate_type
(C++26)
проверяет, является ли отражённый тип агрегатным типом
(функция)
start_lifetime_asstart_lifetime_as_array
(C++23)
неявно создаёт объекты в указанном хранилище, повторно используя представление объекта
(шаблон функции)
is_implicit_lifetime
(C++23)
проверяет, является ли тип типом времени жизни с неявным созданием объектов
(шаблон класса)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/meta/is_implicit_lifetime_type

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API