Der folgende Code führt zwei Compiler-Fehler in VS 2013:Syntaxfehler für Bezeichner 'Iterator'
- Die Vorlage Funktionsdefinition führt
Fehler C2061: Syntaxfehler: Bezeichner '
iterator
' - Die Spezialisierung dieser Template-Funktion wirft
erro r C2912: explizite Spezialisierung ‚
double getFillIn<double,double>(fillInOptions,double,std::_Tree_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<const _Kty,_Ty>>>>,inputLoader *,va_list)
‘ ist keine Spezialisierung einer Funktion Vorlage
Kann jemand bitte erklären, warum? Ich bin ziemlich sicher, dass der zweite Fehler nur eine Konsequenz des ersten ist, aber ich verstehe nicht, warum es iterator
Identifikator nicht herausfinden kann.
#include <map>
template <typename T> class table {
};
template <typename S, typename T>
void f(S s, std::map<S, table<T>*>::iterator it);
Try 'Type-Name Karte *> :: iterator'. –
songyuanyao
Ich habe mich geirrt, aber 'Template-Klasse lookupTable;' vor der vollständigen Definition 'lookupTable' wird dich beißen. Off topic: Die Standardfälle in den Schaltern geben nichts zurück. Gut für eine Compiler-Warnung und ein bisschen fieseres Debugging, wenn ein ungültiges oder neues 'opt' jemals hereinschlüpft. –
user4581301