typename
Remonter à Liste alphabétique des mots clés - Index
Catégorie
Syntaxe 1
typename identificateur
Syntaxe 2
template < typename identificateur > identificateur de classe
Description
Utilisez la syntaxe 1 pour faire référence à un type que vous n'avez pas encore défini. Voir l'exemple 1.
Utilisez la syntaxe 2 à la place du mot clé class dans une déclaration de template. Voir l'exemple 2.
Remarque : Lorsqu'on utilise le mot clé typename dans des templates, le compilateur ne génère pas toujours une erreur dans les cas où le standard ANSI demande le mot clé typename. Le compilateur va repérer l'omission de typename lorsqu'il sera invoqué avec le commutateur -A. Par exemple, le code suivant :
#include <stdio.h> struct A{ typedef int AInt; };
Remarque : Le compilateur va repérer l'omission de typename lorsqu'il sera invoqué avec le commutateur -A.
Remarque : Compilez avec : bcc32 (pas de commutateur -A)
bc++bcc32 test.cpp
Le résultat est correct. Le compilateur ne doit pas supposer que AInt est un typename, mais il le fait à moins que le commutateur -A ne soit utilisé.
Remarque : Compilez avec : bcc32 (commutateur -A)
bc++bcc32 -A test.cpp
Il en résulte :
Erreur E2089 47071.cpp 7: L'identificateur 'AInt' ne peut pas avoir un qualificateur type
Erreur E2303 47071.cpp 7: Nom de type attendu
Erreur E2139 47071.cpp 7: ; manquant dans la déclaration
Les deux résultats sont attendus.