Жуть. Не используйте int/enum в качестве исключений.
обязывать пользователей всегда хранить тип, отнаследованный от std::exception — повлияет на производительность
Стандарт вроде бы нигде не обязывает пользователей наследовать все исключения от std::exception, так с чего бы обязывать здесь? Пользователь как бы сам в состоянии определиться, по карману ему там std::exception или нет.
предлагайте рабочее решение
Я не очень понимаю, что тут предлагать. Изначально это был именно throw exception, но отложенный во времени и пространстве, и в этом была вся фишка. При натягивании его на коды ошибок получилось что-то совсем другое. Оно, возможно, тоже имеет право на существование и найдет применение, но фишка утеряна.
Не заставляйте себя, вы счастливый человек.
А то затянет, прокачаете язык, начнете понимать ссылки на поп-культуру и все — любой перевод будет восприниматься как «рабинович по телефону напел» и просмотры в компаниях и кинотеатрах будут уже не в радость.
«Чутье» вырабатывается не от глубинного понимания принципов (тем более, что тут не точная наука и на каждый принцип есть пачка исключений), а от практики и еще раз практики, на то оно и чутье.
Ваш пример с выпускниками и обладателями опыта как раз об этом, разве нет?
Какой частью речи является cold во фразе “it is cold”? Грамматический учебник с радостью даст готовый ответ. Да и, казалось бы, какая разница?? Однако если с помощью правильно выстроенной системы упражнений понять глубинные механизмы, лежащие в основе построения этой несложной (вроде бы) фразы, то становятся простыми и понятными тысячи частных случаев использования отдельных слов и конструкций.
Когда вы на русском пишете, вы тоже в голове держите «тут у меня существительное, тут наречие, а сюда вверну деепричастный оборот по правилу 5.1.42», или оно таки как-то само получается?
То что обновления Windows, приносят не только исправления но и новые баги — уже не новость
Это не новость с момента рождения индустрии, поэтому некоторые предпочитают любые обновления устанавливать тогда, когда есть время и желание разбираться, если что-то таки пойдет не так, а не тогда, когда вендору захотелось.
В детстве Victory, увы, почти целиком прошел мимо меня, т.к. в то же время по другому каналу шел какой-то унылый сериал для взрослых. Времени хватало только на опенинг, дальше приходилось переключать.
Пересмотрел уже в 2000-х с появлением быстрого интернета и да, он шикарен — классическое аниме 80-х с самурайством, драмой, запредельной эпичностью и периодическими вкраплениями балагана.
Значит, контракт будет нарушен и чьи-то ожидания разойдутся с действительностю.
А теперь представим, что некая программа аллоцирует блок размером не "длина строки + 1", а "длина строки + 42", при этом корректно и строго по документации добавляя нулевой символ после данных. Ну или сама ОС аллоцирует больше запрошенного по каким-то своим причинам, и что?
Стандарт вроде бы нигде не обязывает пользователей наследовать все исключения от std::exception, так с чего бы обязывать здесь? Пользователь как бы сам в состоянии определиться, по карману ему там std::exception или нет.
Я не очень понимаю, что тут предлагать. Изначально это был именно
throw exception
, но отложенный во времени и пространстве, и в этом была вся фишка. При натягивании его на коды ошибок получилось что-то совсем другое. Оно, возможно, тоже имеет право на существование и найдет применение, но фишка утеряна.У меня есть некоторые сомнения в целесообразности упоров на коды ошибок в стандартной библиотеке, в целом построенной вокруг исключений.
Тривиальность копирования как бы зависит не только от E, но и от T.
С этим невозможно не согласиться. Если ими не пользоваться, то и кидать их не придется.
Если рассматривать expected просто как advanced optional — несомненно. Проблема в том, что это был не совсем advanced optional.
О чем и речь.
Ну ок, еще один std::regex.
Вопреки распространенному мнению, амиши — не евреи.
См. анекдот про «выколи мне глаз».
Нет.
А то затянет, прокачаете язык, начнете понимать ссылки на поп-культуру и все — любой перевод будет восприниматься как «рабинович по телефону напел» и просмотры в компаниях и кинотеатрах будут уже не в радость.
Ваш пример с выпускниками и обладателями опыта как раз об этом, разве нет?
Когда вы на русском пишете, вы тоже в голове держите «тут у меня существительное, тут наречие, а сюда вверну деепричастный оборот по правилу 5.1.42», или оно таки как-то само получается?
«летит по непредсказуемой траектории»
«обладает неограниченным радиусом действия»
Пересмотрел уже в 2000-х с появлением быстрого интернета и да, он шикарен — классическое аниме 80-х с самурайством, драмой, запредельной эпичностью и периодическими вкраплениями балагана.
char c[256]
хватит всем, а если не хватит, то потом поменяем на 512. В крайнем случае на 1024.Так неинтересно, список можно продолжать бесконечно.
Значит, контракт будет нарушен и чьи-то ожидания разойдутся с действительностю.
А теперь представим, что некая программа аллоцирует блок размером не "длина строки + 1", а "длина строки + 42", при этом корректно и строго по документации добавляя нулевой символ после данных. Ну или сама ОС аллоцирует больше запрошенного по каким-то своим причинам, и что?
И ничего хорошего, т.к. по контракту (см. выше) он там быть обязан.
Проверьте свой, если еще советский.
А с вашим «исправлением» — был бы: