VC++ 9.0 в Release вставляет проверку при обращении к элементу вектора:
#include <vector>
using namespace std;
int main()
{
vector<int> v;
v.reserve(1);
v[0];
}
; 8 : v[0];
mov edx, DWORD PTR _v$[esp+68]
mov eax, DWORD PTR _v$[esp+64]
sub edx, eax
sar edx, 2
test edx, edx
ja SHORT $LN64@main
call DWORD PTR __imp___invalid_parameter_noinfo
mov eax, DWORD PTR _v$[esp+64]
$LN64@main:
С одной стороны не нашел как эту проверку отключить, с другой — стандарт ее не требует. С третьей стороны непонятно как такое поведение компилятора согласуется с философией языка не платить за то, что не используется.