Maison >développement back-end >C++ >Devriez-vous utiliser le mot-clé « inline » avec les modèles C ?

Devriez-vous utiliser le mot-clé « inline » avec les modèles C ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-28 13:39:10754parcourir

Should You Use the `inline` Keyword with C   Templates?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn