Ответ 1
Как вы его написали, он сказал, что значение возвращаемого указателя равно const. Но значения класса non-class не изменяются (унаследованы от C), и, таким образом, стандарт говорит, что значения класса non-class никогда не являются const-qual (самый правый const был проигнорирован даже указанным вами вами), поскольку const будет немного избыточным, Его не пишите - например:
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();
Обратите внимание, что для типа "g" константа значительна, но для выражений rvalue, генерируемых из типа int const
, const игнорируется. Таким образом, следующая ошибка:
int const f();
int f() { } // different return type but same parameters
Мне неизвестно, что вы могли бы наблюдать "const", кроме как получить тип "g" (и передать &f
в шаблон и вывести его тип, например). Наконец, обратите внимание, что "char const" и "const char" означают один и тот же тип. Я рекомендую вам разобраться с одним понятием и использовать его во всем коде.