Compartir a través de


Error del compilador C2896

'function1': no se puede usar la plantilla de función 'function2' como argumento

Una plantilla de función no puede ser un argumento para otra plantilla de función.

Este error está obsoleto en Visual Studio 2022 y versiones posteriores.

El ejemplo siguiente genera el error C2896:

// C2896.cpp
template<class T1, class T2> void f1(void(*)(T1, T2));
template<class T1, class T2> void f2(T1, T2);

int main() {
   f1(f2);   // C2896
}

El error C2896 también puede producirse cuando se usan genéricos:

// C2896b.cpp
// compile with: /clr
generic<class T1> void gf1(T1){}
generic<class T1> void gf2(T1){}

int main() {
   gf1(gf2);   // C2896
   gf1(1);   // OK
}