Поставил на рабочий ноут Visual Studio 11 Developer Preview.
Погонял разные самопальные бенчмарки типа решета Эратосфена, vector<int> vs vector<bool>, std::string vs char* и т.д., пытаясь выявить улучшения или ухудшения в оптимизации. Лично я ничего кардинального не выявил по сравнению с версией 10.
Очевидно, что статический анализ кода и его безопасность в целом сейчас как никогда в моде, поэтому производители компиляторов постепенно закручивают гайки, превращая предупреждения в ошибки.
Например с ключом /sdl Студия 11 будет считать приведенные ниже предупреждения ошибками.
| Warning | Command line switch | Description |
|---|---|---|
| C4146 | /we4146 | A unary minus operator was applied to an unsigned type, resulting in an unsigned result |
| C4308 | /we4308 | A negative integral constant converted to unsigned type, resulting in a possibly meaningless result |
| C4532 | /we4532 | Use of "continue", "break" or "goto" keywords in a __finally/finally block has undefined behavior during abnormal termination |
| C4533 | /we4533 | Code initializing a variable will not be executed |
| C4700 | /we4700 | Use of an uninitialized local variable |
| C4789 | /we4789 | Buffer overrun when specific C run-time (CRT) functions are used |
| C4995 | /we4995 | Use of a function marked with pragma deprecated |
| C4996 | /we4996 | Use of a function marked as deprecated |
Ссылки по теме: