LINUX.ORG.RU

История изменений

Исправление den73, (текущая версия) :

Тебе сильно поможет имя типа в духе:

Ну как. Я бы не хотел с таким столкнуться. Но если мне его ещё и придётся перед этим вычислять, через auto, то будет намного хуже.

Т.е. он ориентируется не на определение переменной, а на её использование?

Пример же был.

int a = 5
auto b = ...(a)...
auto c = ...(b)...
c+1
Пожалуйста, ориентируйся на определение c. Чем оно тебе поможет? Ты должен разобрать, что есть b и a.

А ошибка выглядит так: пусть операция + определена для кучи типов. Может быть, с - это float и +1 будет плавающим сложением, а может быть, с - это строка и + определено как конкатенация. Значит, перед тем, чтобы понять смысл записи c+1, ты должен будешь на этапе чтения кода распарсить все auto. И компилятор тут тебе не поможет, если ты ошибся и решил, что c - это float, а оно на самом деле строка.

Другое дело, если современная ide распарсит все auto и подсветит реальный тип, но это уже автоматизация работы. Сначала нужно осознать и признать, что сама по себе работа присутствует.

Чёто я не пойму, почему вы тут упираетесь. Это же вполне очевидно.

Исправление den73, :

Тебе сильно поможет имя типа в духе:

Ну как. Я бы не хотел с таким столкнуться. Но если мне его ещё и придётся перед этим вычислять, через auto, то будет намного хуже.

Т.е. он ориентируется не на определение переменной, а на её использование?

Пример же был.

int a = 5
auto b = ...(a)...
auto c = ...(b)...
c+1
Пожалуйста, ориентируйся на определение c. Чем оно тебе поможет? Если операция + определена для кучи типов. Может быть, с - это float и +1 будет плавающим сложением, а может быть, с - это строка и + определено как конкатенация. Значит, перед тем, чтобы понять смысл записи c+1, ты должен будешь на этапе чтения кода распарсить все auto. И компилятор тут тебе не поможет, если ты ошибся.

Другое дело, если современная ide распарсит все auto и подсветит реальный тип, но это уже автоматизация работы. Сначала нужно осознать и признать, что сама по себе работа присутствует.

Чёто я не пойму, почему вы тут упираетесь. Это же вполне очевидно.

Исходная версия den73, :

Тебе сильно поможет имя типа в духе:

Ну как. Я бы не хотел с таким столкнуться. Но если мне его ещё и придётся перед этим вычислять, через auto, то будет намного хуже.

Т.е. он ориентируется не на определение переменной, а на её использование?

Пример же был.

int a = 5
auto b = ...(a)...
auto c = ...(c)...
c+1
Пожалуйста, ориентируйся на определение c. Чем оно тебе поможет? Если операция + определена для кучи типов. Может быть, с - это float и +1 будет плавающим сложением, а может быть, с - это строка и + определено как конкатенация. Значит, перед тем, чтобы понять смысл записи c+1, ты должен будешь на этапе чтения кода распарсить все auto. И компилятор тут тебе не поможет, если ты ошибся.

Другое дело, если современная ide распарсит все auto и подсветит реальный тип, но это уже автоматизация работы. Сначала нужно осознать и признать, что сама по себе работа присутствует.

Чёто я не пойму, почему вы тут упираетесь. Это же вполне очевидно.