La forma en que lo escribió, decía "el valor del puntero devuelto es const". Pero los valores de tipo no de clase no son modificables (heredados de C), y por lo tanto el Estándar dice que los valores de tipo no de clase nunca son calificados (la const de extremo derecho fue ignorada incluso si usted lo especificó) ya que const sería algo redundante . No se escribe él - ejemplo:
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();
Tenga en cuenta que para el tipo de "g", la const es significativa, pero para las expresiones generadas a partir de rvalue tipo int const
se ignora la const. Por lo que el siguiente es un error:
int const f();
int f() { } // different return type but same parameters
No hay manera conocida para mí se podía observar el "const" excepción de conseguir en el tipo de "g" en sí (y pasando &f
a una plantilla y deducir su tipo , por ejemplo). Finalmente observe que "char const" y "const char" significan el mismo tipo. Te recomiendo que te conformes con una noción y la uses en todo el código.
¿Es solo yo o esta pregunta le falta claridad? – jldupont
@ Jean-Lou: Estoy de acuerdo en que el cuerpo de la pregunta en sí es algo vago, pero el título de la pregunta realmente expresa su significado. – sbi