- meta[meta header]
- std::meta[meta namespace]
- access_context[meta class]
- function[meta id-type]
- cpp26[meta cpp]
consteval info scope() const;- info[link ../info.md]
アクセスコンテキストのスコープのリフレクションを返す。
このアクセスコンテキストが関連付けられているスコープのリフレクションを返す。
access_context::current()で取得したコンテキストの場合、current()を呼び出した時点で囲んでいる関数や名前空間などのスコープが返される。
#include <meta>
#include <print>
class C {
public:
static void inspect() {
// current()はinspect()関数内で呼ばれたので、スコープはinspect()関数
constexpr auto ctx = std::meta::access_context::current();
std::println("inspect()のスコープ: {}",
std::meta::display_string_of(ctx.scope()));
}
};
void free_function() {
// current()はfree_function()内で呼ばれたので、スコープはfree_function()
constexpr auto ctx = std::meta::access_context::current();
std::println("free_function()のスコープ: {}",
std::meta::display_string_of(ctx.scope()));
}
int main() {
// current()はmain()内で呼ばれたので、スコープはmain()
constexpr auto ctx = std::meta::access_context::current();
std::println("main()のスコープ: {}",
std::meta::display_string_of(ctx.scope()));
C::inspect();
free_function();
}- scope()[color ff0000]
- std::meta::access_context::current[link current.md]
- std::meta::display_string_of[link ../display_string_of.md]
main()のスコープ: int main()
inspect()のスコープ: static void C::inspect()
free_function()のスコープ: void free_function()
- C++26
- Clang: ??
- GCC: 16 (
-freflectionオプション指定) [mark verified] - Visual C++: ??