Здравствуйте, Qbit86, Вы писали:
Q>В C++ это не так: выбираешь ли ты «Go To Declaration Ctrl+F12», или «Go To Definition F12» — он может выдать список. Потому что компилятор на «этапе чтения мной кода» (евпочя) не имеет достаточной информации; он будет её иметь, только когда я попытаюсь код вызвать, SFINAE, и всё такое. А в нормальных языках компилятору не нужна поздняя стадия инстанцирования, чтобы знать, что к чему.
Q>Разобрался?
Что-то ты тут бредишь, причём сразу по нескольким пунктам.
1. Компиляторы не имеет никакого отношения ни к каким "Go To Declaration" или "Go To Definition". Они занимаются исключительно преобразованием исходных кодов в исполняемые и всё. А то, что ты описываешь — это работа IDE, у которых для этих целей есть свои анализаторы кода.
2. IDE и для C++ и для C# бывают разные, с очень разными анализаторами кода. Начиная от простейших на базе ctags и кончая сложными решениями, строящими полноценное AST в реальном времени. Уточни про какую конкретную IDE ты пишешь и какие конкретно примеры в ней работают не так, как тебе нравится. Возможно тебе подскажут IDE, которая делает всё как надо.
3. Рассуждения о недостаточности информации у IDE для построения полноценного AST (причём почему-то именно для C++) вообще смешны. Т.е. у компилятора есть вся необходимая информация (он же создаёт вполне однозначный исполняемый файл по данных исходникам), а у IDE значит нет? Откуда тогда её берёт компилятор, телепатически?

На самом деле каждому адекватному специалисту вполне очевидно, что вся необходимая информация у IDE имеется и в C# и в C++. Разница тут в другом, достаточно банальном нюансе — для анализа C++ кода требуется существенно больше процессорного времени, так что построение AST в реальном времени (а именно это надо в IDE) является не такой простой задачей, как в случае C#. Соответственно в прошлом подобные анализаторы для C++ или работали точно, но сильно подтормаживали, или же работали быстро, но использовали некоторые эмпирики. Отсюда появление у некоторых неразбирающихся программистов мифов о невозможности анализа C++ кода в IDE. Однако в большинстве случае это уже всё в прошлом — анализаторы постоянно совершенствовались, оптимизировались и сейчас уже вполне себе нормально работает в реалтаймe и для сложного C++. Естественно речь про лидеров в данной области, а не про всякие убогие IDE.