Heim >Backend-Entwicklung >C++ >Was stellt den „unmittelbaren Kontext' in C 11 SFINAE dar?
Was genau ist der „unmittelbare Kontext“ in C 11 SFINAE?
Das Konzept des „unmittelbaren Kontexts“ ist in der Substitution von C 11 von entscheidender Bedeutung Failure Is Not an Error (SFINAE)-Redewendung. Gemäß dem C 11-Standard können nur ungültige Typen und Ausdrücke „im unmittelbaren Kontext“ des Funktionstyps und seiner Vorlagenparametertypen zu einem Abzugsfehler führen.
Erstes Verständnis
Der Standard gibt in einem Hinweis einen begrenzten Hinweis: „Die Auswertung ersetzter Typen und Ausdrücke kann zu Nebenwirkungen wie Spezialisierungen von Klassenvorlagen, Spezialisierungen von Funktionsvorlagen usw. führen. implizite Funktionsgenerierung usw. Diese Nebenwirkungen werden nicht als Teil des „unmittelbaren Kontexts“ betrachtet.
Entscheidungsverfahren
Um festzustellen, ob ein Substitutionsfehler im „unmittelbaren Kontext“ auftritt, gehen Sie wie folgt vor Vorgehensweise:
Konkret Beispiele
template<typename T> void func(typename T::type* arg);
func<A<int&>&>(nullptr); // T::type* is invalid, causing a hard error.
template<typename T> void func(typename T::type* arg);
template<> struct A<char> {};
func<A<char>>(nullptr); // T::type* is not defined, leading to a deduction failure.
Fazit
Das „unmittelbarer Kontext“ bezieht sich auf Ausdrücke und Typen, die aufgelöst werden können, ohne dass über den erforderlichen Vorinstanziierungsschritt hinaus eine zusätzliche Vorlagen- oder Funktionsgenerierung erforderlich ist. Fehler, die in dieser Phase vor der Instanziierung auftreten, führen zu harten Kompilierungsfehlern, während Fehler in der nachfolgenden Substitutionsphase zu Abzugsfehlern führen.
Das obige ist der detaillierte Inhalt vonWas stellt den „unmittelbaren Kontext' in C 11 SFINAE dar?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!