10

Имеет ли режим C++ 0x в VC++ 2010 выключенный переключатель? Я работаю над проектом, который должен компилироваться на компиляторах, отличных от 0x, и поэтому я хочу скомпилировать их по сравнению с текущим стандартом. (Даже если не новые функции используются напрямую, все еще есть тонкости, которые делают C++ 0x более предпосылкой).Отключение функций C++ 0x в VC 2010?

Ближайший коммутатор, который я нашел, был Configuration Properties -> C/C++ -> Language -> Disable Language Extensions, но это не тот.

ответ

13

Нет, языковые расширения обычно являются нестандартными дополнениями для конкретного поставщика.

C++ 0X: нет прямого способа отключить эти функции. Одно из них - не использовать их. Тем не менее, обратите внимание, что все еще будет заметная разница в производительности в версиях среды выполнения VC. VC10 реализует семантику перемещения, а стандартная библиотека (например, std::string) использует эти функции щедро.

Разумным компромиссом, на мой взгляд, является переход на VS2008. Недавние версии VS были заведомо ошибочными (до сих пор, по моему опыту) и никогда не работали так, как они должны, без пакета обновления. VS2008 довольно стабилен сейчас, без каких-либо из этих возможностей C++ 0x и должен соответствовать вашему счету.

+5

Вы также можете переключиться на использование VS2008 компилятора в VS2010 IDE, а в настройках проекта. – Andy