std::meta::access_context::current

来自cppreference.com
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));

示例

参阅

分别返回关联作用域和指定类
(公开成员函数) [编辑]