Warum können Compiler Vorlagentypparameter nicht von Standardfunktionsargumenten ableiten?
Trotz der scheinbar logischen Annahme können C-Compiler Vorlagen nicht automatisch ableiten Geben Sie Parameter aus Standardfunktionsargumenten ein. Dies gilt aus unterschiedlichen Gründen sowohl für C 03 als auch für C 11.
In C 03 ist die Unfähigkeit des Compilers auf explizite Sprachspezifikationen zurückzuführen (§14.8.2/17): „Ein Vorlagentypparameter kann nicht sein.“ wird vom Typ eines Funktionsstandardarguments abgeleitet.“
In C 11 ist es zwar möglich, ein Standardvorlagenargument anzugeben, es muss jedoch explizit bereitgestellt werden. Das Standardfunktionsargument selbst bleibt für die Ableitung von Vorlagenargumenten unbrauchbar:
<code class="cpp">void bar(int a, T b = 0.0f) { } // C++11</code>
Der C 11-Standard (14.8.2.5/5) definiert nicht abgeleitete Kontexte, zu denen Folgendes gehört:
Als Ergebnis die explizite Bestimmung von Standardvorlagenargumenten ist oft notwendig, um Kompilierungsfehler zu vermeiden.
Das obige ist der detaillierte Inhalt vonWarum können C-Compiler keine Vorlagentypparameter aus Standardfunktionsargumenten ableiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!