Heim > Backend-Entwicklung > C++ > Hauptteil

Welche Einschränkungen und Zulassungen gibt es für die Spezialisierung innerhalb des std-Namespace?

Barbara Streisand
Freigeben: 2024-11-02 13:31:30
Original
829 Leute haben es durchsucht

 What are the Restrictions and Allowances for Specialization within the std Namespace?

Spezialisierung im std-Namespace: Einschränkungen und Zulassungen

Trotz der Möglichkeit, explizite Spezialisierungen zum std-Namespace hinzuzufügen, gelten für bestimmte Vorlagen explizite Verbote . Das Verständnis dieser Einschränkungen ist von entscheidender Bedeutung, um die Gültigkeit von Code sicherzustellen, der Standard-Namespace-Spezialisierungen verwendet.

Spezialisierung für Vorlagen verboten

  • numeric_limits: Nicht zulässig für nicht-arithmetische Standardtypen (z. B. complex).
  • shared_ptr: Muss CopyConstructible, CopyAssignable, LessThanComparable und in bool konvertierbar sein.
  • weak_ptr: Muss CopyConstructible sein Und CopyAssignable.
  • std::hash: Spezialisierungen müssen die Anforderungen des Klassenvorlagen-Hashs erfüllen.
  • type_traits: Explizite Spezialisierungen aller darin enthaltenen Klassenvorlagen sind undefiniert, sofern nicht anders angegeben.
  • Gebietsschemata: Haben erforderliche Spezialisierungen.
  • istreambuf_iterator: Erfordert einen trivialen Kopierkonstruktor, einen constexpr-Standardkonstruktor und trivial Destruktor.
  • komplex: Nur Float-, Double- und Long-Double-Spezialisierungen sind zulässig.
  • atomic: Spezialisierungen müssen einen gelöschten Kopierkonstruktor haben, Kopierzuweisungsoperator und constexpr-Wertkonstruktor.
  • unary_function und binäre_Funktion: Veraltet und sollte nicht spezialisiert werden.

Zusätzliche Einschränkungen

  • Gemäß Klausel 17.6.4.2.1 ist das Verhalten undefiniert beim Hinzufügen von Deklarationen oder Definitionen zum Namespace std oder seinen Unternamespaces. Ausnahmen gelten nur für Vorlagenspezialisierungen, die von benutzerdefinierten Typen abhängen und Standardanforderungen erfüllen.
  • Es ist verboten, eine Mitgliedsfunktion einer Standardbibliotheksklassenvorlage, einer Mitgliedsfunktionsvorlage oder einer Mitgliedsklassenvorlage explizit zu spezialisieren.

Zur Spezialisierung zugelassene Vorlagen

Vorlagen, die nicht ausdrücklich verboten sind, können spezialisiert werden, wenn sie darauf angewiesen sind benutzerdefinierte Typen und erfüllen die Standardanforderungen für die Originalvorlage.

Das obige ist der detaillierte Inhalt vonWelche Einschränkungen und Zulassungen gibt es für die Spezialisierung innerhalb des std-Namespace?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!