Heim >Backend-Entwicklung >C++ >Welche Einschränkungen gibt es bei der Spezialisierung von Vorlagen im std-Namespace?

Welche Einschränkungen gibt es bei der Spezialisierung von Vorlagen im std-Namespace?

Susan Sarandon
Susan SarandonOriginal
2024-10-30 18:59:30345Durchsuche

 What are the Restrictions on Specializing Templates within the std Namespace?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn