E2105 Le qualificateur 'modèle' doit spécifier un nom de modèle membre (C++)
Remonter à Erreurs et avertissements du compilateur (C++) - Index
When parsing code that depends in some way upon a template parameter, it is sometimes impossible to know whether a member name will resolve to a template function name, or a regular parameter. In the following code, a 'template' qualifier is required in order to know if the '<' (less-then) operator should be parsed as the beginning character of a template argument list, or as a regular less-than operator:
template<class T> void foo(T a) { a.member<10>(); }
Même si cela semble évident pour vous, le compilateur ne sait pas que ce "membre" fait référence à une fonction modèle de membre ; c'est pour cette raison qu'il analyse la ligne de code comme suit :
a.member < (10>());
Afin d'indiquer au compilateur que le caractère "inférieur à" est au début d'une liste d'arguments de modèles, le qualificateur 'modèle' est nécessaire :
a.template member<10>(); // "membre" doit être un modèle de membre
Si le qualificateur 'modèle' est utilisé dans une situation où "membre" ne se résout pas en modèle de membre, le message d'erreur ci-dessus apparaît.