Size: a a a

2020 March 21

FS

Flower Surgeon in pro.cxx
И я не собираюсь возлагать на плечи компилятора тяжёлую работу по автодетекту. Вместо этого я могу оставить ему хинт в виде noexcept.
источник

PZ

Pavel Zhigulin in pro.cxx
Ну, определить в стандарте, что move-конструктор всегда noexcept?
источник

FS

Flower Surgeon in pro.cxx
Я боюсь, что это не так просто, как вы думаете.
источник

PK

Pavel Kazakov in pro.cxx
Pavel Zhigulin
Ну, определить в стандарте, что move-конструктор всегда noexcept?
т.е. если мув провалится по любой причине, сразу исключение в колено кидать? :)
источник

nn

no name in pro.cxx
Pavel Zhigulin
Зачем?
чтобы иметь возможность передать свои знания о контракте коллеге или компилятору
источник

PZ

Pavel Zhigulin in pro.cxx
Тогда не работает правило "нельзя бросать исключения в move-конструкторе" и я все ещё не понимаю зачем noexcept в шаблонах)
источник

FS

Flower Surgeon in pro.cxx
no name
чтобы иметь возможность передать свои знания о контракте коллеге или компилятору
👍 лучше и не сказать
источник

PZ

Pavel Zhigulin in pro.cxx
no name
чтобы иметь возможность передать свои знания о контракте коллеге или компилятору
Какие знания в шаблонах? Любой человек запихнувший в шаблон тип без noexcept все сломает)

Если очень надо - вешаем static_assert
источник

PZ

Pavel Zhigulin in pro.cxx
Когда ты пишешь шаблон, ты не можешь дать никаких гарантий никому
источник

PZ

Pavel Zhigulin in pro.cxx
Потому что ты не знаешь, во что его будут инстанцировать
источник

nn

no name in pro.cxx
Pavel Zhigulin
Какие знания в шаблонах? Любой человек запихнувший в шаблон тип без noexcept все сломает)

Если очень надо - вешаем static_assert
или не сломает. возможность выбросить исключение не значит что оно будет выброшено. есть куча кода, который писался когда не было никаких noexcept
источник

PK

Pavel Kazakov in pro.cxx
no name
или не сломает. возможность выбросить исключение не значит что оно будет выброшено. есть куча кода, который писался когда не было никаких noexcept
тогда были throw()
источник

PK

Pavel Kazakov in pro.cxx
поэтому не надо говорить, что об исключениях не думали
источник

nn

no name in pro.cxx
которым никто не пользовался
источник

PZ

Pavel Zhigulin in pro.cxx
no name
или не сломает. возможность выбросить исключение не значит что оно будет выброшено. есть куча кода, который писался когда не было никаких noexcept
Настанет день - и сломает) И вот тогда придется убрать noexcept) Привет проблемы с тем, что кто-то положился на noexcept)
источник

PK

Pavel Kazakov in pro.cxx
канешна никто не пользовался!
источник

FS

Flower Surgeon in pro.cxx
no name
которым никто не пользовался
пользовались, почему нет?
источник

AP

Antony Polukhin in pro.cxx
Pavel Zhigulin
Я прочитал документ, там написано как плохо пихать везде noexcept, но так и не понял в чём собственно состоит идея/предложение.

Убрать noexcept из стандартной либы?
Идея описана в самом конце: не применять P1656 "Throws: Nothing" should be noexcept до тех пор, пока не появятся концепты
источник

AP

Antony Polukhin in pro.cxx
Иначе - концепты теряют часть смысла, корпоративные стандартные библиотеки перестают удовлетворять стандатту, мы поощряем плохие практики и провоцируем баги
источник

m

magras in pro.cxx
Antony Polukhin
Народ, нужен фидбек на идею http://apolukhin.github.io/papers/Back%20to%20Throws%20Nothing.html

Буду рад любым коментариям и замечаниям.
1. Чем так плохо, что будут non confirming библиотеки?
2. Если я пишу noexcept neutral code, отсутствие noexcept на стандартной библиотеке заставляет меня либо писать в документации, что не смотря на то что моя функция не кидает пока вы не используете кидающие контракты все в порядке, либо писать unconditional noexcept.

А можно ли сделать так, чтобы контракты влияли на сигнатуру функции? То есть снимали бы noexept, если используются исключения для сигнализации нарушения контракта?
источник