Kompilatorfel C2893

Det gick inte att specialisera funktionsmallens mallnamn

Anmärkningar

Kompilatorn kunde inte specialisera en funktionsmall. Det kan finnas många orsaker till det här felet.

I allmänhet är sättet att lösa ett C2893-fel att granska funktionens signatur och se till att du kan instansiera alla typer.

Example

C2893 beror på f att T mallparametern std::map<int,int> är std::map<int,int> saknar medlemmen data_type (T::data_type kan inte instansieras med T = std::map<int,int>.). I följande exempel genereras 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);
}