typename

De Appmethod Topics
Aller à : navigation, rechercher

Remonter à Liste alphabétique des mots clés - Index


Catégorie

Mots clés spécifiques C++

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.