Namespaces
Variants

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

С ru.cppreference.net
< cpp | meta
 
 
 
Библиотека рефлексии
Запросы доступности членов
Идентификация области видимости
Запросы членов рефлексии
Рефлексия аннотаций
Извлечение значений
Подстановка рефлексии
Рефлексия результатов выражений
Генерация определений классов

Основные категории типов
Составные категории типов
Свойства типов ➜
Отношения типов
 
Типы и запросы рефлексии
Запросы рефлексии
Запросы размещения в памяти (layout)
Свойства типов
Запросы свойств типов
 
Определён в заголовке <meta>
consteval bool has_static_storage_duration( std::meta::info r );
(1) (начиная с C++26)
consteval bool has_thread_storage_duration( std::meta::info r );
(2) (начиная с C++26)
consteval bool has_automatic_storage_duration( std::meta::info r );
(3) (начиная с C++26)

Определяет, представляет ли r объект или переменную с указанной продолжительностью хранения (storage duration).

1) Возвращает true, если r представляет объект или переменную с статической продолжительностью хранения; в противном случае возвращает false.
2) Возвращает true, если r представляет переменную с продолжительностью хранения потока (thread); в противном случае возвращает 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));
}

Смотрите также

проверяет, имеет ли отражаемая сущность связывание (linkage)
(функция)