Maison >développement back-end >C++ >Devriez-vous utiliser le mot-clé « inline » avec les modèles C ?
Mot-clé en ligne avec des modèles
Lorsque l'on considère l'utilisation du mot-clé en ligne avec des modèles, la question se pose de savoir s'il est redondant, étant donné les paramètres du compilateur. capacité à déterminer les avantages de l'inline.
La réponse : non, ce n'est pas le cas Irrelevant
Malgré les connaissances du compilateur, le mot-clé inline reste pertinent pour les modèles. Bien que les modèles de fonctions ne soient généralement pas en ligne par défaut, leur spécialisation explicite peut les rendre en ligne.
Cas spécifiques
Il existe des cas où l'omission du mot-clé en ligne peut entraîner des problèmes. . Prenons l'exemple suivant :
#include "tpl.h"
#include "tpl.h"
#ifndef TPL_H #define TPL_H template<class T> void f(T) {} template<class T> inline T g(T) {} template<> inline void f<>(int) {} // OK: inline template<> int g<>(int) {} // error: not inline #endif
La compilation de ce code entraîne plusieurs erreurs de définition car g<> n'est pas explicitement marqué comme en ligne.
Règle générale
Pour maintenir la cohérence et éviter les erreurs potentielles, envisagez d'utiliser le mot-clé inline pour les modèles de fonctions destinés à être en ligne. . Cela correspond à la règle empirique proposée dans les « Modèles C : le guide complet » de Vandevoorde/Josuttis, qui suggère d'écrire en ligne lorsque cela est vraiment souhaité.
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!