Die Art und Weise, wie Sie es geschrieben haben, hieß es "der zurückgegebene Zeigerwert ist const". Aber nicht-type rvalues sind nicht modifizierbar (von C geerbt), und daher sagt der Standard, dass nicht-klasse type rvalues niemals const-qualifiziert sind (ganz rechts const wurde ignoriert, auch wenn sie von dir spezifiziert wurden), da const irgendwie überflüssig wäre . Man braucht es nicht schreiben - Beispiel:
int f();
int main() { f() = 0; } // error anyway!
// const redundant. returned expression still has type "int", even though the
// function-type of g remains "int const()" (potential confusion!)
int const g();
Beachten Sie, dass für die Art von „g“, die const ist signifikant, aber für rvalue Ausdrücke erzeugt von Typ int const
die const ignoriert. Also folgende ist ein Fehler:
int const f();
int f() { } // different return type but same parameters
Es gibt keine Möglichkeit, mir bekannt ist, dass Sie die „const“ anders als immer in der Art von „g“ beobachten konnten selbst (und vorbei &f
zu einer Vorlage und ableiten seine Art , beispielsweise). Beachten Sie, dass "char const" und "const char" den gleichen Typ bedeuten. Ich empfehle Ihnen, sich mit einer Idee zufrieden zu geben und diese im gesamten Code zu verwenden.
Ist es nur mir oder dieser Frage mangelt es an Klarheit? – jldupont
@ Jean-Lou: Ich stimme zu, dass der Körper der Frage selbst etwas vage ist, aber der Titel der Frage vermittelt seine Bedeutung. – sbi