Size: a a a

2021 July 04

K

Kelbon in supapro.cxx
это потому что деструктор по умолчанию noexcept, а из noexcept функции выкидывание исключения это terminate, насколько я понимаю. Но можно ли деструктор обозначить как throw()?)
источник

DR

Denys Romanov in supapro.cxx
Я знаю про default noexcept у деструкторов. В одной лекции сказали, что его можно снять(что не работает оказалось) через noexcept(false) и выкидывать(но с использованием проверок, например: std::uncaught_exception(s))
источник

IZ

Ilia Zviagin in supapro.cxx
Ну обознач.
Но это ничего не поменяет в проведении
источник

K

Kelbon in supapro.cxx
зато насколько я знаю можно обернуть деструктор в try catch конструкцию и тогда, наверное, прямо из неё можно выбросить исключение дальше
источник

K

Kelbon in supapro.cxx
нужно проверять
источник

K

Kelbon in supapro.cxx
хотя лучше просто запретить все  исключения()
источник

DR

Denys Romanov in supapro.cxx
Лучше, наверное, и функциональный try-блок с деструкторами не использовать, т.к. его работа прервется( -> std::terminate ) и также деструктор свое выполнение не закончит
источник

Е

Егор in supapro.cxx
согласен, что может пойти не так
источник

K

Kelbon in supapro.cxx
можно миллиард найти таких штук, которые и преподаватель не заметит при проверке, че ж теперь?
источник

Е

Егор in supapro.cxx
искать преподавателя который знает больше новичка
источник

K

Kelbon in supapro.cxx
то есть ты считаешь, что
1. Новичок не способен понять, что в коде что то не так, но при этом способен отличить хорошо знающего С++ человека от не хорошо знающего
2. Всем новичкам нужно искать преподавателя, да ещё не абы какого
3. Есть какие то "хорошо знающие люди", которые  видят абсолютно все ошибки абсолютно всегда с первого взгляда
источник

Е

Егор in supapro.cxx
не понимаю с чего ты большинство выводов сделал, я спорил с этим https://t.me/supapro/918619
Работает != правильный код
источник

K

Kelbon in supapro.cxx
написать работающий код != написать идеальный код. Если задание сортировать массив, то если он сортируется - задание выполнено. Это можно проверить. А то что там UB при каких то обстоятельствах это уже невозможно нормально проверить
источник

F

Free in supapro.cxx
А можете обьяснить как работает данный код (он убирает знаки препитнания, но не пойму зачем (i—, 1)
for (int i = 0, len = str.size(); i < len; i++) {

     if (ispunct(str[i])) {
       str.erase(i--, 1);
       len = str.size();
     }
   }
источник

SA

Sergey Anisimov in supapro.cxx
Такая спецификация исключений (throw(/* ... */)) deprecated и removed as of C++20.
источник

K

Kelbon in supapro.cxx
слава богу конечно, но до С++ 20 она все ещё существует
источник

АВ

Александр Водянников... in supapro.cxx
А ты выведи значения i и поймёшь
источник

SA

Sergey Anisimov in supapro.cxx
Это такие костыли, что аж противно. erase() возвращает следующий валидный итератор сам по себе, не нужно извращаться.
источник

АК

Александр Караев... in supapro.cxx
И зачем, если есть noexcept(false)?
источник

А

Анвар in supapro.cxx
К примеру если строка
ффф!!ффф
Если i примет значение 3 то строка обретет вид
ффф!ффф и i примет значение 4 то есть перейдет к след ф пропустив один !
источник