E2102 Template 'template' kann ohne Spezifizierungsparameter nicht verwendet werden (C++)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Compiler-Fehler und -Warnungen (C++) - Index

Die generische Form einer Template muss über Spezifizierungsparameter referenziert werden. Wenn beispielsweise eine Template-Klasse namens foo zwei Parameter übernimmt, sieht eine zulässige Referenz folgendermaßen aus:



 foo<int, char>



Die Bezugnahme auf die Template mit foo ist nur in zwei Fällen erlaubt:

  • Wenn der Template-Name als Template-Template-Argument übergeben wird
  • Während der Deklaration der Elemente dieser Klassen-Template, um den umgebenden Template-Typ zu referenzieren

Ein Beispiel:



 template<class T>
 class foo
 {
 public:
     foo();       // diese Verwendung des Template-Namens ist erlaubt
     foo& operator=(const &);
 };
 foo<foo> x;   // Fehler: kein Template-Template-Argument
 foo y;    // Fehler: Spezifizierungsparameter erforderlich