VS 2010 имеет нечто двойственное.В частности, он на самом деле имеет два совершенно отдельных интерфейса компилятора.
Когда вы компилируете код, это делается с помощью собственного компилятора Microsoft, который полностью восходит к MS C 3.0 для MS-DOS, выпущенному ~ 3 десятилетияназад (на тот случай, если вам интересно, почему это был 3.0, MS продавала перед этим маркированную версию Lattice C до этого).
Вплоть до VS 2008 анализ в IDE был довольно примитивным по сравнению с компилятором., поэтому он не совсем правильно анализирует более сложный C ++.Они решили, что это неприемлемо, и вместо того, чтобы пытаться обновить существующий синтаксический анализатор IDE, чтобы он соответствовал компилятору, они лицензировали внешний интерфейс компилятора EDG.
Это дает более или менее противоположную ситуацию: анализатор IDE для IntellisenseТеперь он значительно ближе к соответствию, чем тот, что есть в компиляторе, и распознает значительное количество конструкций C ++ 0x, которых нет у компилятора.
Хотя в этом есть немного больше, чем просто:Интерфейс EDG-компилятора поддерживает переключатель, который делает его более похожим на VC ++, включая эмуляцию значительного числа ошибок VC ++.Хотя у меня нет данных, чтобы подтвердить это, я предполагаю, что Microsoft использует эту возможность.Поскольку это основано на том, что EDG берет компилятор VC ++ и эмулирует его ошибки, вероятно, справедливо предположить, что (по крайней мере, обычно) эмуляция EDG VC ++ будет работать вокруг версии позади самого VC ++.Это дает несколько парадоксальную ситуацию, когда EDG (при обычном использовании) обычно немного опережает VC ++, но версия, которую MS использует в IDE, вероятно, по крайней мере, немного отстает в большинстве случаев.