std::meta::parent_of
Depuis fr.cppreference.net
| Défini dans l'en-tête <meta>
|
||
consteval std::meta::info parent_of( std::meta::info r );
|
(depuis C++26) | |
Détermine la plus petite portée de classe, d'énumération, de fonction ou d'espace de noms qui contient la déclaration de ce que r représente. Renvoie une réflexion de cette classe/énumération/fonction/espace de noms.
Si r représente un membre de données non statique ou un champ de bits sans nom d'une union anonyme, le résultat représente cette union.
Si r représente une relation de classe de base directe (c'est-à-dire un élément de std::meta::bases_of(rc, ctx)), le résultat représente la classe dérivée dans la relation.
Paramètres
| r | - | une valeur de réflexion |
Valeur de retour
Une réflexion de l'entité dont la portée contient la déclaration de ce que r représente.
Exceptions
Lève std::meta::exception sauf si std::meta::has_parent(r) est vrai.
Exemple
Exécuter ce code
#include <meta>
struct I {};
struct F : I
{
union { int o; };
enum N { A };
};
constexpr auto ctx = std::meta::access_context::current();
static_assert(std::meta::parent_of(^^F) == ^^::);
static_assert(std::meta::parent_of(std::meta::bases_of(^^F, ctx)[0]) == ^^F);
static_assert(std::meta::is_union_type(std::meta::parent_of(^^F::o)));
static_assert(std::meta::parent_of(^^F::N) == ^^F);
static_assert(std::meta::parent_of(^^F::A) == ^^F::N);
int main() {}
Voir aussi
(C++26) |
vérifie si l'entité réfléchie est contenue dans une portée (fonction) |