170 похожих чатов

Посоветуйте на счёт спецификации noexcept. Много где советуют ставить над

каждым методом класса в пользу оптимизации. Следует его ставить везде или нет?

21 ответов

6 просмотров

Да, следует, если этот метод не кидает ничего. Особенно на конструкторы и оператор присваивания

Учти, что методов где его можно поставить обычно очень мало

Ilya Zviagin
Учти, что методов где его можно поставить обычно о...

Потому, что это значит что ничто изнутри (включая контейнеры и все такое прочее) не выкинет исключение никогда (контейнеры могут, но спецификация это пытается запретить)?

Andrey- Автор вопроса
Mikhail Kalugin
Потому, что это значит что ничто изнутри (включая ...

Я понял что это для оптимизации и локализации точки падения

Andrey
Я понял что это для оптимизации и локализации точк...

Да, в основном для оптимизации - мы как бы проводим границу говорим: «исключение никогда не перейдет эту границу», и компилятор может не создавать код передачи исключения от этого места дальше.

Andrey- Автор вопроса
Ilya Zviagin
НЕ для локализации

Мы можем посмотреть сразу в то место где была перейдена граница, разве не так?

Andrey
Мы можем посмотреть сразу в то место где была пере...

И да и нет. Мы обязаны обработать все исключения до пересечения этой границы.

Andrey
Мы можем посмотреть сразу в то место где была пере...

В лучшем случае, попытка перейти эту границу просто не скомпилируется. В худшем, исключения просто будут исчезать и все будет работать очень странно.

Mikhail Kalugin
В лучшем случае, попытка перейти эту границу прост...

Такое возможно только при вызове из extern "C" контекста

Andrey- Автор вопроса
Mikhail Kalugin
В лучшем случае, попытка перейти эту границу прост...

Не скомпилируется тогда когда мы добавили условия в noexcept. А когда исключения могут исчезнуть?

Andrey
Не скомпилируется тогда когда мы добавили условия ...

А, тут я перепутал немного: это происходит на границах контекстов C и C++ - C не знает об исключениях.

Andrey- Автор вопроса
Ilya Zviagin
Учти, что методов где его можно поставить обычно о...

Хотел переспросить, а как в случае get/set методов?

Andrey- Автор вопроса
Ilya Zviagin
Ничем не отличается...

Например если в программе достаточно много их, прийдётся все специфицировать.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта