Open apolukhin opened 3 years ago
yndx-antoshkka, 10 января 2019, 12:15 Эту идею недавно обсуждали в комитете. На практике - она ничего на даёт, кроме поломок тестового кода с throw 42;. Никаких оптимизаций из неё не выжать - разработчикам стандартных библиотек и компиляторов всё равно придётся тащить старый функционал, выбростить его ни не могут.
Igor Baidiuk, 11 января 2019, 14:38 yndx-antoshkka, Я бы сказал, возможность кидать что угодно в принципе вредная.
Игорь Шаповал, 10 января 2019, 21:27 Ведь register удалили, тогда зачем это держать. Это ведь поошрения плохого кода. Я понимаю что С++ разработчику нужна свобода. register ведь ламает обратную совместимость! То тогда зачем это. Я думаю это можно и нужно предлагать на удаления.
Alexander, 15 января 2019, 22:45 Игорь Шаповал,не передёргивайте, пожалуйста. register удалили ввиду того, что миграция кода, где он был, продёт\прошла относительно безболезненно (так как компилятор и сам неплохо занимается распределением регистров). В случае с бросанием простых примитивов миграция кода, там где такое бросают (я ни в коем случае не одобряю подобное), будет скорее всего более болезненной. Я бы предложил собрать статистику по крупным проектам и приложить её к предложению, если Вы готовы написать такое.
Подход с исследованием не в новинку комитету, и подобное исследование уже проводили в случае с тем же if(a < b < c)
Перенос предложения: голоса +11, -7 Автор идеи: Игорь Шаповал
В С++17 удалили с стандарта Dynamic exception specification. Для того чтобы использовать свои исключения, мы должны создать класс и унаследоваться от std::exception. Мы должны переопределить метод what(). Но в стандарте мы можем кидать исключения еще примитивного типа.
На практике исключения такого типа безполезны. Во-первых, если как в коде выше, то все понятно. Во-вторых, если это исключение брошеное в какой-то библиотеке, где мы имеем только заголовочные файлы. Это кошмар! Во-третих, каждый программист согласится, что это плохая техника написания кода. Предлагаю удалить с стандарта кидания исключения примитивного типа и оставить только кидания типа класса.
Надеюсь что в стандарт добавят stacktrace. В Java stacktrace используется с исключениями с начала добавления исключения. Хотелось в С++ иметь также. В С++17 начали чистить языковые и библиотечные возможности. Надеюсь что это также попадет под чистку.