Erro do compilador C3855
'class': o parâmetro de tipo 'param' é incompatível com a declaração
O compilador encontrou modelo não tipo ou parâmetros genéricos com nomes diferentes. Isso pode ocorrer quando um parâmetro de modelo especificado na definição de uma especialização de modelo for incompatível com sua declaração.
A amostra a seguir gera C3855:
// C3855.cpp
template <int N>
struct C {
void f();
};
template <char N>
void C<N>::f() {} // C3855
Resolução possível:
// C3855b.cpp
// compile with: /c
template <int N>
struct C {
void f();
};
template <int N>
void C<N>::f() {}
C3855 também pode ocorrer ao usar genéricos:
// C3855c.cpp
// compile with: /clr
generic <class T>
ref struct GC1 {
generic <class U>
ref struct GC2;
};
generic <class T>
generic <class U>
generic <class V>
ref struct GC1<T>::GC2 { }; // C3855
Resolução possível:
// C3855d.cpp
// compile with: /clr /c
generic <class T>
ref struct GC1 {
generic <class U>
ref struct GC2;
};
generic <class T>
generic <class U>
ref struct GC1<T>::GC2 { };