Посмотрите на этот простой пример: < /p>
Код: Выделить всё
template
const T const_create() {
return T();
}
struct Foo { };
int main() {
auto &x = const_create(); // compiles
// auto &x = const_create(); // doesn't compile
}
Почему версия с foo компиляция, но с int нет? Другими словами, почему const удаляется из возвращаемого типа const_create ? Это работает так, как если он возвращает int , а не const int . Разве это не является несоответствием на языке?>
Подробнее здесь:
https://stackoverflow.com/questions/581 ... some-cases