Пробую запустить такой код
#include <iostream>
#include <string>
int main() {
std::string b("a");
std::cout << b[20];
return 0;
}
ожидал увидеть какой-то мусор в ответе, но в итоге это вешает VS(или начинает
долгую загрузку символов для combase.dll) если запустить с отладчиком. А если без то получаю Debug Assertion Failed. Как я понял из документации [] не должен проверять выход за границы. Тогда почему компилятор не может выполнить эти операции? Или т.к это undefined behavior, то стандартный компилятор VS решает эту проблему так?
Извините, что тут, но комментария мало...
QED - вот:
_NODISCARD reference operator[](const size_type _Off)
{ // subscript mutable sequence
auto& _My_data = this->_Get_data();
#if _ITERATOR_DEBUG_LEVEL >= 1
_STL_VERIFY(_Off <= _My_data._Mysize, "string subscript out of range");
#endif /* _ITERATOR_DEBUG_LEVEL >= 1 */
return (_My_data._Myptr()[_Off]);
}
из <xstring>
в VC++ 2017 - вот тут и вылетает в отладочной версии, на проверке выхода за границы диапазона. В релизе этого не будет...
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Пишу сервер на qtВопрос такой, могу ли я по очереди проинициализировать два socket и использовать их вместе
Есть класс List и класс NodeКак я не пытался описать деструкторы, методы del_first и del_last работают некорректно
Товарищи подскажите, как выровнять блок меню по центру который большей ширины контейнера в котором он лежит
Можно ли как-то присвоить id плейсхолдеру? Нужно чтобы он динамически изменялся, в зависимости от выбранной валютыСейчас выглядит так: