Partager via


Erreur du compilateur C2783

'declaration' : impossible de déduire l’argument de modèle pour 'identifier'

Le compilateur ne peut pas déterminer un argument de modèle. Les arguments par défaut ne peuvent pas être utilisés pour déduire un argument de modèle.

L’exemple suivant génère l’erreur C2783 :

// C2783.cpp
template<typename T1, typename T2>
T1 f(T2) {
   return 248;
}

int main() {
   f(1);   // C2783
   // try the following line instead
   int i = f<int>(1);
}

C2783 peut également se produire lors de l’utilisation de génériques :

// C2783b.cpp
// compile with: /clr
using namespace System;
generic<typename T1, typename T2>
T1 gf(T2) {
   T1 t1 = safe_cast<T1>( Activator::CreateInstance(T1::typeid));
   return t1;
}

ref class MyClass{};

int main() {
   int i;
   i = gf(9);   // C2783

   // OK
   i = gf<int>(9);
}