Ceci est la déclaration de l'ISO C++ standard 14,6/6:Modèles: Résolution de noms -> EST cette déclaration est vraie tant que l'héritage?
Dans la définition d'un modèle de classe ou dans la définition d'un membre d'un modèle de classe, le mot-clé
typename
n'est pas nécessaire en se référant à des personnes non qualifiées nom d'un membre précédemment déclaré du modèle de classe qui déclare un type. Le mot clétypename
doit toujours être spécifié lorsque le membre est référencé à l'aide d'un nom qualifié, même si le qualificatif est simplement le nom du modèle de classe. [Exemple:template<class T> struct A { typedef int B; A::B b; // ill-formed: typename required before A::B void f(A<T>::B); // ill-formed: typename required before A<T>::B typename A::B g(); // OK };
Le typename mot-clé est nécessaire si le nom qualifié est
A
ouA<T>
parceA
ouA<T>
sont synonymes dans un modèle de classe avec la liste des paramètres<T>
. ]
Est-ce que cette déclaration est vraie pendant l'héritage?
Si oui, quelqu'un peut-il expliquer cela?
J'ai vérifié avec classe interne; c'est accepté? Mais je suis incapable de vérifier avec l'héritage?
Peut-être pourriez-vous développer votre question avec quelques exemples; Je ne pense pas que ce soit très clair comme indiqué (je ne comprends certainement pas ce que vous demandez). (En outre, je pense que vos commentaires dans le texte cité peuvent être dans le mauvais sens, ils n'ont pas de sens où ils sont actuellement placés.Je n'ai pas de PDF de la norme à portée de main pour vérifier). –
ISO/IECINTERNATIONAL STANDARD 14882 Deuxième édition 2003-10-15 Les langages de programmation - C++ Langages de programmation - C++ –
@BES: Je suppose que vous avez essayé de poster un lien mais ne pouvait pas parce que vous n'avez pas assez points. C'est une bonne chose, car pirater la norme sur ce site ne serait pas cool. – Potatoswatter