Où et pourquoi faut-il placer les mots-clés template et typename en C++ ?
Bonjour, collègues ! J'écris en C++ depuis plusieurs mois, mais les modèles me donnent toujours du fil à retordre. Les mots-clés `template` et `typename` me perturbent particulièrement. Je comprends qu'ils sont liés aux noms dépendants (dependent names), mais en pratique, je reçois constamment des erreurs de compilation.
Voici un exemple concret qui m'a bloqué. Supposons que j'ai une classe de conteneur template, et que je veux écrire une fonction qui affiche les éléments d'un type itérateur imbriqué :
```cpp
#include
#include
template
void printFirst(const T& container) {
T::const_iterator it = container.begin(); // Erreur !
std::cout << *it << std::endl;
}
int main() {
std::vector vec = {1, 2, 3};
printFirst(vec);
return 0;
}
```
Le compilateur (GCC) affiche : `error: need 'typename' before 'T::const_iterator' because 'T' is a dependent scope`. J'ajoute `typename` — l'erreur disparaît. Mais quand j'essaie de faire quelque chose de similaire avec un template imbriqué,
No answers yet.
Connectez-vous pour laisser une réponse
Blogs
Client HTTP en PHP : effectuer des requêtes correctement
TypeScript vs Python pour le backend : que choisir en 2025 pour un débutant
Optimisation des performances des applications PHP : méthodes pratiques
Kotlin dans l'embarqué : écrire du code pour microcontrôleurs sans douleur