Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Nepodařilo se specializovat šablonu funkce "název šablony"
Poznámky
Kompilátor se nepodařilo specializovat šablonu funkce. Tato chyba může mít celou řadu příčin.
Obecně platí, že způsob, jak vyřešit chybu C2893, je zkontrolovat podpis funkce a ujistit se, že můžete vytvořit instanci každého typu.
Příklad
K C2893 dochází, protože fparametr T šablony je vyvolána std::map<int,int>, ale std::map<int,int> nemá žádný člen data_type (T::data_type nelze vytvořit instanci s T = std::map<int,int>.). Následující příklad vygeneruje 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);
}