std::meta::reflect_constant_array
| Défini dans l'en-tête <meta>
|
||
template< ranges::input_range R >
consteval std::meta::info reflect_constant_array( R&& r );
|
(depuis C++26) | |
Renvoie une réflexion qui représente un objet tableau dont les éléments sont les éléments correspondants de r.
L'objet résultant est un objet paramètre de modèle : il a une durée de stockage statique, et les plages avec des contenus équivalents aux arguments de modèle correspondent au même objet.
Si la taille de r n'est pas nulle, l'objet tableau résultant est un objet potentiellement non unique.
Soit U comme ranges::range_value_t<R> et T comme std::remove_all_extents_t<U>.
Le programme est mal formé si l'une des conditions suivantes est vraie :
Tn'est pas un type structurel.Tne satisfait pas copy_constructible.Un'est pas un type tableau, etstd::is_constructible_v<T, ranges::range_reference_t<R>>est faux.
Paramètres
| r | - | une input_range |
Valeur de retour
Si la taille de r n'est pas nulle, une réflexion qui représente un objet paramètre de modèle de type const T[N] (où N est la taille de r). Chaque élément de l'objet paramètre de modèle est équivalent à un argument de modèle à :
std::meta::reflect_constant_array(*it)siUest un type tableau ;std::meta::reflect_constant(static_cast<T>(*it))sinon ;
où it est un itérateur vers l'élément correspondant de r.
Sinon (la taille de r est nulle), une réflexion qui représente l'objet paramètre de modèle de type const std::array<T, 0> initialisé avec {}.
Exceptions
Lève toute exception levée par :
- une opération sur
rou sur les itérateurs ou sentinelles der; - tout argument de
std::meta::reflect_constantou tout appel destd::meta::reflect_constant_arraydécrit ci-dessus.
Lève std::meta::exception si toute invocation de std::meta::reflect_constant se terminerait par une exception.
Notes
Le résultat de std::meta::reflect_constant_array convient à une utilisation avec std::meta::substitute. Si l'appelant souhaite obtenir un std::span d'un tableau statique, par opposition à une valeur de réflexion, std::define_static_array est généralement plus approprié.
Exemple
| Cette section est incomplète Raison : aucun exemple |
Voir aussi
(C++26) |
promeut un tableau à la compilation en stockage statique, renvoyant un span du tableau statique (modèle de fonction) |
(C++26) |
promeut une chaîne à la compilation en stockage statique, renvoyant une réflexion représentant la chaîne statique (modèle de fonction) |
(C++26) |
renvoie une réflexion représentant une valeur ou un objet paramètre de modèle, adapté à une utilisation comme argument de modèle constant (modèle de fonction) |