Почему в некоторых случаях удаляются квалификаторы 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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