Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Impossibile specializzare il modello di funzione 'nome modello'
Osservazioni:
Il compilatore non è riuscito a specializzare un modello di funzione. Le cause dell'errore possono essere molteplici.
In generale, il modo per risolvere un errore C2893 consiste nel esaminare la firma della funzione e assicurarsi di poter creare un'istanza di ogni tipo.
Esempio
C2893 si verifica perché fil parametro del modello T di viene dedotto come std::map<int,int>, ma std::map<int,int> non dispone di alcun membro data_type (T::data_type non può essere creata un'istanza con T = std::map<int,int>.). L'esempio seguente genera l'errore 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);
}