- meta[meta header]
- std::meta[meta namespace]
- function[meta id-type]
- cpp26[meta cpp]
namespace std::meta {
consteval bool has_parent(info r);
}- info[link info.md]
リフレクションが親スコープを持つかどうかを判定する。
rについて、以下の順に判定する:
- グローバル名前空間を表す場合、
falseを返す - C言語リンケージを持つエンティティを表す場合、
falseを返す - C++以外のリンケージを持つエンティティを表す場合、実装定義
- クラス型でも列挙型でもない型を表す場合、
falseを返す - それ以外で、エンティティまたは直接基底クラス関係を表す場合、
trueを返す - それ以外の場合、
falseを返す
#include <meta>
namespace ns {
struct S {};
}
int main() {
static_assert(std::meta::has_parent(^^ns::S));
static_assert(std::meta::parent_of(^^ns::S) == ^^ns);
}- std::meta::parent_of[link parent_of.md]
- C++26
- Clang: ??
- GCC: 16 (
-freflectionオプション指定) [mark verified] - Visual C++: ??