Spezialisierungseinschränkungen innerhalb des std-Namespace
Der std-Namespace ermöglicht eine explizite Spezialisierung seiner Vorlagen, es bestehen jedoch bestimmte Einschränkungen.
Vorlagen, deren Spezialisierung verboten ist:
Gemäß dem C-Standard können die folgenden Vorlagen nicht innerhalb des std-Namespace spezialisiert werden:
-
numeric_limits für nicht -arithmetische Typen (z. B. complex):Nur arithmetische Typen können spezialisiert werden.
-
shared_ptr und schwacher_ptr:Müssen bestimmte Anforderungen an Kopierbarkeit, Zuweisbarkeit und Vergleiche erfüllen.
-
Hash: Spezialisierungen müssen den Anforderungen der Standard-Hash-Klassenvorlage entsprechen.
-
Typmerkmale (): Spezialisierungsverhalten ist undefiniert, sofern nicht ausdrücklich erlaubt (z. B. sind nur bestimmte common_type-Spezialisierungen zulässig).
-
Gebietsschemata: Haben erforderliche Spezialisierungen.
-
istreambuf_iterator: Erfordern a trivialer Kopierkonstruktor, Standardkonstruktor und Destruktor.
-
komplex für Nicht-Gleitkommatypen: Das Definieren von Spezialisierungen für andere Typen wird als sinnlos angesehen.
-
atomar :Kopiervorgänge und ein constexpr-Wertkonstruktor müssen gelöscht sein.
-
unäre_Funktion und binäre_Funktion:Spezialisierungen sind veraltet und verboten.
Allgemein Einschränkungen:
- Jede Spezialisierung darf nicht im Widerspruch zu den ursprünglichen Vorlagenanforderungen stehen.
- Explizite Spezialisierungen und Instanziierungen von Standardbibliotheksvorlagen sind verboten, sofern nicht ausdrücklich angegeben.
- Explizite Spezialisierungen von Mitgliedsfunktionen, Funktionsvorlagen oder Mitgliedsklassenvorlagen von Standardbibliotheksklassen sind undefiniertes Verhalten.
Das obige ist der detaillierte Inhalt vonWelche Einschränkungen gibt es bei der Spezialisierung von Vorlagen im std-Namespace?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!