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));
Пример
См. также
| возвращает связанную область видимости и обозначающий класс соответственно (открытая функция-член) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/meta/access_context/current