Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Falha ao especializar o modelo de função 'nome do modelo'
Observações
O compilador falhou ao especializar um modelo de função. Pode haver muitas causas para este erro.
Em geral, a maneira de resolver um erro C2893 é rever a assinatura da função e certificar-se de que você pode instanciar cada tipo.
Example
C2893 ocorre porque o parâmetro de modelo de f é deduzido como std::map<int,int> em T, mas std::map<int,int> não tem o membro data_type (T::data_type não pode ser instanciado com T = std::map<int,int>.). O exemplo a seguir gera C2893.
// C2893.cpp
// compile with: /c /EHsc
#include <map>
using namespace std;
class MyClass {};
template<class T>
inline typename T::data_type
// try the following line instead
// inline typename T::mapped_type
f(T const& p1, MyClass const& p2);
template<class T>
void bar(T const& p1) {
MyClass r;
f(p1,r); // C2893
}
int main() {
map<int,int> m;
bar(m);
}