Maison >développement back-end >C++ >Comment fonctionne le jeton points de suspension (...) dans les modèles variadiques C 11 ?
Modèles variadiques et jeton Ellipsis ("...")
En C 11, les modèles variadiques permettent un nombre flexible de modèles paramètres. Lors de la définition d'un modèle variadique, le jeton points de suspension (...) joue un rôle crucial.
Déballage vs emballage
La position des points de suspension détermine sa fonction :
Exemple de déballage
Considérez la fonction de modèle variadique suivante :
<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>
Lors de l'appel de make_unique avec plusieurs arguments, les points de suspension (dans std::forward(Args>(args)...) permettent à la fonction d'accepter un nombre variable d'arguments. Les points de suspension décompactent le pack de paramètres Args, ce qui entraîne le expression développée suivante :
<code class="cpp">std::forward<Arg0>(arg0), std::forward<Arg1>(arg1), ...</code>
Placement des points de suspension dans les arguments du modèle et de la fonction
Dans la liste des arguments du modèle, les points de suspension sont placés au milieu pour indiquer que le paramètre pack se poursuit dans la liste des paramètres de fonction. En effet, il peut y avoir des paramètres de modèle supplémentaires (par exemple, des paramètres non variadiques) après le pack de paramètres variadiques.
Dans l'implémentation de la fonction, les points de suspension sont placés à la fin. de l'expression pour marquer la fin des arguments décompressés. Il garantit que tous les arguments restants sont transmis sans être regroupés dans une seule entité.
Applications supplémentaires
Les points de suspension. peut également être utilisé dans d'autres contextes, tels que :
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!