Unmittelbarer Kontext bei der C 11-Vorlagensubstitution
Der C 11-Standard führt Substitution Failure Is Not An Error (SFINAE) ein, das dies ermöglicht Unterdrückung harter Kompilierungsfehler während der Ersetzung von Vorlagenargumenten. Der Standard definiert jedoch einen spezifischen „unmittelbaren Kontext“, für den SFINAE gilt, was eine gewisse Unsicherheit darüber lässt, wann ein Substitutionsfehler zu einem harten oder weichen Fehler führt.
Unmittelbare Kontextdefinition
Der Standard definiert den unmittelbaren Kontext als:
"Nur ungültige Typen und Ausdrücke im unmittelbaren Kontext des Funktionstyps und seiner Vorlagenparametertypen können zu einem Abzugsfehler führen ... Solche Nebenwirkungen stehen nicht im „unmittelbaren Kontext“ und können dazu führen, dass das Programm fehlerhaft ist.“Entscheidung Verfahren
Um festzustellen, ob ein Ersetzungsfehler im unmittelbaren Kontext auftritt, berücksichtigen Sie das folgende Entscheidungsverfahren:
Schritt 1:
Identifizieren Sie alle Vorlagen und implizit definierte Funktionen, die erforderlich sind, um das Ergebnis der Substitution zu bestimmen.Schwerer Fehler:
func> - Instanziierung von ADurch das Verständnis des Konzepts des unmittelbaren Kontexts und die Verwendung der Mithilfe des oben beschriebenen Entscheidungsverfahrens können Programmierer besser vorhersagen, wann Substitutionsfehler zu harten oder weichen Fehlern führen, was eine effektivere Nutzung von SFINAE in C 11 ermöglicht Vorlagen.
Das obige ist der detaillierte Inhalt vonWas bestimmt, ob ein C 11-Template-Ersetzungsfehler ein harter oder weicher Fehler ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!