const
изменяет то, что находится непосредственно перед ним;в
int foo() const;
это постоянная функция, а не возвращаемое значение.(По определению, функция является const, если тип ее указателя this
является указателем на const. Только функции-члены могут быть const.)
Чтобы сделать возвращаемый тип const, немедленно поместите const
после возвращаемого типа, например:
int const foo();
Обратите внимание, однако, что это const игнорируется для типов не из классов;возвращаемое значение будет rvalue (временным), и только rvalues типа класса имеют cv-квалифицированные типы.(Я думаю, что некоторые компиляторы даже предупредят об этом.)