Почему в некоторых случаях удаляются квалификаторы CV из типа возврата функции?C++

Программы на C++. Форум разработчиков
Anonymous
Почему в некоторых случаях удаляются квалификаторы CV из типа возврата функции?

Сообщение Anonymous »

Посмотрите на этот простой пример: < /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

Вернуться в «C++»