Fehler bei der expliziten C-Spezialisierung im Nicht-Namespace-Bereich
Ein C-Kompilierungsfehler kann auftreten, wenn versucht wird, eine Mitgliedsfunktionsvorlage außerhalb des explizit zu spezialisieren Namespace-Bereich, was zur Meldung „Explizite Spezialisierung im Nicht-Namespace-Bereich“ führt. Bei diesem Problem handelt es sich um einen Verstoß gegen den C-Standard, der die Deklaration expliziter Spezialisierungen innerhalb des Namespace der Vorlage oder ihrer umschließenden Klasse vorschreibt.
Um dieses Problem zu beheben, ziehen Sie die folgenden Optionen in Betracht:
namespace detail { template <typename TL> void Verify(int, int[]) {} template <> void Verify<int>(int, int[]) {} } template<typename T> class CConstraint { // ... template <typename TL> void Verify(int position, int constraints[]) { detail::Verify<TL>(position, constraints); } };
Durch Platzieren der Spezialisierung im richtigen Bereich oder Weiterleiten an eine Nichtmitgliedsfunktion sollte der Kompilierungsfehler behoben werden.
Das obige ist der detaillierte Inhalt vonWarum gibt C den Fehler „Explizite Spezialisierung im Nicht-Namespace-Bereich' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!