Re: vector::operator[], runtime check?
От: ioni Россия  
Дата: 27.10.09 05:27
Оценка:
Здравствуйте, igna, Вы писали:

I>VC++ 9.0 в Release вставляет проверку при обращении к элементу вектора:


I>С одной стороны не нашел как эту проверку отключить, с другой — стандарт ее не требует. С третьей стороны непонятно как такое поведение компилятора согласуется с философией языка не платить за то, что не используется.


нормально согласуется (сразу ассемблер)
Это у вас release или debug
из файла <vector>

    const_reference operator[](size_type _Pos) const
        {    // subscript nonmutable sequence

 #if _HAS_ITERATOR_DEBUGGING
        if (size() <= _Pos)
            {
            _DEBUG_ERROR("vector subscript out of range");
            _SCL_SECURE_OUT_OF_RANGE;
            }
 #endif /* _HAS_ITERATOR_DEBUGGING */
        _SCL_SECURE_VALIDATE_RANGE(_Pos < size());

        return (*(_Myfirst + _Pos));
        }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.