Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Échec de la spécialisation du modèle de fonction « nom du modèle »
Remarques
Le compilateur n’a pas pu se spécialiser dans un modèle de fonction. Cette erreur peut avoir plusieurs causes.
En règle générale, la façon de résoudre une erreur C2893 consiste à passer en revue la signature de la fonction et à vous assurer que vous pouvez instancier chaque type.
Exemple
C2893 se produit parce que fle paramètre T de modèle est déduit comme étant std::map<int,int>, mais n’a std::map<int,int> aucun membre data_type (T::data_type ne peut pas être instancié avec T = std::map<int,int>.). L’exemple suivant génère l’erreur C2893.
// C2893.cpp
// compile with: /c /EHsc
#include <map>
using namespace std;
class MyClass {};
template<class T>
inline typename T::data_type
// try the following line instead
// inline typename T::mapped_type
f(T const& p1, MyClass const& p2);
template<class T>
void bar(T const& p1) {
MyClass r;
f(p1,r); // C2893
}
int main() {
map<int,int> m;
bar(m);
}