Trame2771
@Trame2771

Что значит ссылка без типа?

long x = 10;

const &y = x;
cout << typeid(y).name() << '\n'; // тип int, а не long

x += 10;
cout << y; // 10, а не 20


Может ссылка восприняла x как r-value? Но тогда почему после const автоматом стоит int? Если написать const x = 10, то будет ошибка
  • Вопрос задан
  • 128 просмотров
Решения вопроса 1
@MarkusD Куратор тега C++
все время мелю чепуху :)
const &y = x;
Это не ссылка без типа, а синтаксически неверный код, который не пройдет трансляцию за пределами GCC.

Т.к. ты пользуешься GCC, тебе стоит принять во внимание то, что он не соблюдает стандарт в некоторых случаях.
В частности - в данном случае.

В C++ нет типа по умолчанию, в отличие от С, где типом по умолчанию является int. Если в C код const y = x является синтаксически верным и подразумевает const int y = x, то в C++ этот же код является уже синтаксически неверным и не пройдет трансляцию.
GCC в твоем коде отходит от стандарта C++ в пользу поведения как в C.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
vt4a2h
@vt4a2h Куратор тега C++
Senior software engineer (C++/Qt/boost)
Компилируйте всегда с флагами -Wall -Wextra -pedantic и будет вам счастье :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы