J'essaie de trouver des informations sur le mot-clé modèle utilisé comme désambiguïsant, mais il n'y a rien à ce sujet. Probablement je suis à la recherche de mauvais mots-clés, mais il n'y a rien de tel que .template ou -> template en standard. Google montre seulement les problèmes de GCC de différents forums, mais pas vraiment d'explication à quoi il sert.modèle disambiguator
Le code comme celui-ci n'a pas pu être compilé sans le mot-clé template sur la ligne 11 (sur GCC), mais je ne suis pas sûr que cela soit conforme à la norme.
template<typename B>
struct S1
{
template<typename T> void test() {}
};
template<typename T>
struct S2
{
S2()
{
S1<T>().template test<int>();
}
};
int main()
{
S2<int>();
}
Donc ma question est: pourquoi mot-clé modèle utilisé ici, quel genre d'ambiguïté est là sans ce mot-clé et où puis-je lire à ce sujet (j'apprécierais vraiment lien à la norme).
Merci.
@Prasoon: Je sais là où beaucoup de questions où l'utilisation du mot-clé 'template' était la réponse, mais je ne trouve pas de question la demandant directement. –
@ Space_C0wb0y: Désolé, j'ai supprimé mon commentaire précédent. –
Vous pouvez également lire ceci: http://stackoverflow.com/questions/3786360/confusing-template-error/3786726#3786726 –