Namespaces
Variants

std::meta::can_substitute

Depuis fr.cppreference.net
< cpp | meta
 
 
 
Bibliothèque de réflexion
Catégories de types primaires
Catégories de types composites
Propriétés de type ➜
Relations entre types
 
Types et requêtes de réflexion
Requêtes de réflexion
Requêtes de disposition de réflexion
Propriétés de type
Requêtes de propriété de type
 
Défini dans l'en-tête <meta>
template< std::meta::reflection_range R = std::initializer_list<std::meta::info> >
consteval bool can_substitute( std::meta::info templ, R&& arguments );
(depuis C++26)

Soit Z le modèle représenté par templ, Args... les valeurs, types ou modèles représentés par les éléments successifs de arguments, détermine si Z<Args...> est un identificateur de modèle valide.

Retourne true si Z<Args...> est valide et ne nomme pas une fonction avec un type de retour placeholder non déduit ; sinon retourne false.

Paramètres

templ - une réflexion du modèle
arguments - une plage de réflexions

Valeur de retour

Une valeur booléenne indiquant si la substitution est valide.

Exceptions

Lève std::meta::exception à moins que templ ne représente un modèle et que chaque élément de arguments ne représente une construction appropriée comme argument de modèle.

Notes

Si la formation de Z<Args...> conduit à un échec en dehors du contexte immédiat, le programme est mal formé.

Exemple

#include <meta>
#include <tuple>

static_assert(std::meta::can_substitute(^^std::tuple, {^^void}));
static_assert(can_substitute(^^std::tuple, {^^int, ^^int})); // using argument-dependent lookup
static_assert(!can_substitute(^^std::tuple, {std::meta::reflect_constant(42)}));

consteval
{
    try
    {
        can_substitute(^^std::tuple, {^^::}); // Throws std::meta::exception
                                              // the global namespace cannot be a template arg
    } catch (std::meta::exception&) {}
}

int main() {}

Voir aussi

obtient une réflexion du résultat de la substitution des arguments réfléchis dans le modèle réfléchi
(fonction modèle)
retourne une réflexion représentant une valeur ou un objet paramètre de modèle, appropriée pour être utilisée comme argument de modèle constant
(fonction modèle)
retourne une réflexion représentant un objet, appropriée pour être utilisée comme argument de modèle constant
(fonction modèle)
retourne une réflexion représentant une fonction, appropriée pour être utilisée comme argument de modèle constant
(fonction modèle)