Template-Template-Parameter verstehen
Im C-Bereich stellen Template-Template-Parameter für einige Programmierer eine Herausforderung dar. Lassen Sie uns ein weit verbreitetes Missverständnis ausräumen:
Missverständnis:
Was hindert C im folgenden Codeausschnitt daran, Z als eine weitere Vorlagenklasse und nicht als Vorlagenparameter zu betrachten?
<code class="cpp">template<class T> class B {}; // Templated class template<template<class X> class Z = B> // Line in question class BB{};</code>
Erklärung:
Template-Template-Parameter verhalten sich ähnlich wie normale Template-Typ-Parameter. Sie akzeptieren jedoch keine konkreten Typen; Stattdessen akzeptieren sie selbst Vorlagen. Hier ist ein vereinfachtes Verständnis:
Im Beispiel ist die Syntax template Klasse Z = B> Definiert einen vorlagenbasierten Typparameter Z, der eine Vorlagenklasse mit einem Vorlagenparameter Template-Parameter sind in C nicht möglich. Dies ist eine Entwurfsentscheidung des Standardisierungsausschusses, um die Compiler-Implementierung zu vereinfachen.
Analogie: Funktionen und Funktionszeiger
Ziehen Sie zum besseren Verständnis Parallelen zu Funktionen und Funktion Zeiger:
Funktionen:
Werte als Argumente akzeptierenObwohl Vorlagenparameter für Vorlagen nicht möglich sind, Stellen wir uns eine Situation vor, in der sie nützlich sein könnten:
Angenommen, wir möchten eine generische Graphsuchbibliothek mit Algorithmen erstellen, die auf verschiedenen Arten von Stapeln oder Warteschlangen arbeiten, die wiederum mit verschiedenen Containertypen implementiert werden können. Ein Template-Template-Template-Parameter könnte es uns ermöglichen, alle diese Aspekte in einem einzigen Funktionsaufruf anzugeben. Da jedoch keine Vorlagenparameter verfügbar sind, bleibt dieser Anwendungsfall ein hypothetisches Beispiel.
Das obige ist der detaillierte Inhalt vonWarum kann C keine Vorlagenparameter verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!