std::meta::has_static_storage_duration, std::meta::has_thread_storage_duration, std::meta::has_automatic_storage_duration
С ru.cppreference.net
| Определён в заголовке <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) (функция) |