Compilador erro C2993
Mensagem de erro
'identificador': Tipo ilegal para o parâmetro do modelo não é do tipo 'parameter'
Você não pode declarar um modelo com uma estrutura ou união argumento.Use ponteiros para passar estruturas e uniões sistema autônomo parâmetros de modelo.
O exemplo a seguir gera C2993:
// C2993.cpp
// compile with: /c
// C2993 expected
struct MyStruct {
int a;char b;
};
template <class T, struct MyStruct S> // C2993
// try the following line instead
// template <class T, struct MyStruct * S>
class CMyClass {};
Este erro também será gerado sistema autônomo resultado do trabalho de conformidade de compilador que foi concluído no Visual Studio .NET 2003: parâmetros de modelo de tipo não ponto flutuante não permitidos.Padrão C++ não permite parâmetros de modelo de tipo não do ponto flutuante.
Se for um modelo de função, use um argumento de função para passar o flutuante ponto de parâmetro de modelo de tipo não (esse código serão válido na versões de Visual Studio .NET 2003 e Visual Studio .NET do Visual C++).Se for um modelo de classe, não há nenhuma solução fácil.
See Resumo das alterações de quebras de time de compilar para obter mais informações.
// C2993b.cpp
// compile with: /c
template<class T, float f> void func(T) {} // C2993
// OK
template<class T> void func2(T, float) {}