Чисто по документации MSDN:
«Предполагать, что нет псевдонимов» ( / Oa ) и связанные параметры были удалены в Visual Studio 2008 .
__ declspec ( restrict ) и __declspec ( noalias ) были добавлены (2003 или ранее, см. Также Рекомендации по оптимизации )
Исходя из этого I сделает вывод, что компилятор / оптимизатор по умолчанию предполагает использование псевдонимов в соответствии с правилами C ++ (примерно, указатели одного типа могут указывать на одну и ту же память). Это кажется разумным шагом во избежание ошибок из-за глобальной чрезмерно агрессивной опции / Oa.
Я бы также предположил, что генерация кода времени соединения увеличивает область, в которой можно обнаружить сглаживание.
Лучшая справка, не относящаяся к MSDN, которую я смог найти, это: Блог команды VC ++ . Однако это просто указывает на то, что компилятор потратил некоторое время на анализ псевдонимов. Возможно, связанное с Channel9 видео дает некоторое представление.
(Некоторым посчастливилось попросить дополнительную информацию в комментариях к VC ++. Подсказка ...)
[ edit ] Я не знаю, попал ли Phoenix в VS2010, видео рассказывает о псевдонимах 6:00, но ничего особенного.