Spec-Zone.ru › C++

std::meta::access_context::current

static consteval std::meta::access_context current() noexcept;

Возвращает новый access_context, связанная область видимости которого — наименьшая область видимости пространства имён, класса или функции, охватывающая место вызова, а обозначающий класс — нулевая рефлексия.

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

Объект access_context, связанная область видимости которого является охватывающей областью видимости, как описано выше.

Примечания

Если current() используется в инициализаторе члена по умолчанию или аргументе по умолчанию, местом вызова считается точка использования инициализатора или аргумента по умолчанию (а не место, где лексически находится вызов current()).

consteval auto current_scope(std::meta::info r = std::meta::access_context::current().scope())
{
    return r;
}

static_assert(std::meta::is_namespace(current_scope()));
struct S { static_assert(std::meta::is_type(current_scope())); };
void f() { static_assert(std::meta::is_function(current_scope())); }

Если current() используется в объявлении функции (до тела функции, если оно есть), область видимости функции пропускается при определении охватывающей области видимости.

auto f()
    -> std::bool_constant<std::meta::is_namespace(std::meta::access_context::current().scope())>;

static_assert(^^decltype(f()) == dealias(^^std::true_type));

Пример

См. также

scopedesignating_class
возвращает связанную область видимости и обозначающий класс соответственно
(открытая функция-член)

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

Spec-Zone.ru

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