Erro do compilador C3230
'function' : o argumento de tipo de modelo para 'template' não pode conter um parâmetro de tipo genérico: 'param'
Os modelos são instanciados em tempo de compilação, mas os genéricos são instanciados em tempo de execução. Portanto, não é possível gerar código genérico que possa chamar o modelo, porque o modelo não pode ser instanciado em tempo de execução quando o tipo genérico é finalmente conhecido.
O exemplo a seguir gera C3230:
// C3230.cpp
// compile with: /clr /LD
template <class S>
void f(S t);
generic <class U>
ref class C {
void f1(U x) {
f(x); // C3230
}
};