Règles de syntaxe pour le jeton "..." dans les modèles variadiques
En C, les modèles variadiques permettent la construction de modèles qui acceptent un nombre variable d'arguments. Le jeton "..." joue un rôle crucial dans ce contexte, servant soit de pack d'arguments, soit de décompresseur de paramètres.
Règles de syntaxe pour le placement des points de suspension
Le le placement du jeton "..." détermine sa fonction :
Exemple : Modèle variadique avec "..."
Considérez le modèle variadique suivant :
<code class="cpp">template< class T, class... Args > unique_ptr<T> make_unique( Args&&... args ) { return unique_ptr<T>(new T(std::forward<Args>(args)...)); }</code>
Dans cet exemple , "..." sert de pack d'arguments, tandis que le "..." dans l'implémentation de la fonction décompresse les arguments dans la variable args.
Raison du placement différent des points de suspension
La différence de placement des points de suspension entre la liste d'arguments du modèle et la liste de paramètres est due à la distinction entre l'emballage des arguments et le déballage des paramètres. Dans la liste des arguments du modèle, "..." signifie que les paramètres doivent être regroupés dans un seul pack de paramètres, tandis que dans la liste des paramètres, "..." indique que les arguments doivent être décompressés en paramètres individuels.
Modèles de décompression
Lorsque "..." apparaît sur le côté droit d'une expression en tant que décompresseur, il suit un modèle spécifique :
Avancé Utilisation : Initialisation des tableaux
Les points de suspension peuvent également être utilisés pour initialiser des tableaux :
<code class="cpp">struct data_info { boost::any data; std::size_t type_size; }; std::vector<data_info> v{{args, sizeof(T)}...}; //pattern = {args, sizeof(T)}</code>
Cela initialise le vecteur v avec des valeurs où chaque élément est une structure contenant un argument et un sizeof (T) paire.
En conclusion, le jeton "..." dans le contexte de modèles variadiques sert à la fois de pack d'arguments et de décompresseur de paramètres, suivant des règles de syntaxe spécifiques pour les modèles de placement et de décompression. Son utilisation flexible permet de créer et de personnaliser des modèles puissants.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!