... и уродуют ли.
В последние годы участились выпуски новых стандартов С++. Стандарты обновляют, что-то является действительно полезным улучшением, а что-то, на чей-то взгляд, уродует язык. Казалось бы, зачем весь этот "синтаксический сахар". Для чего создают новые стандарты и кому это нужно/выгодно.
Предлагаю обсудить здесь, что нравится и что не нравится в стандартах 11, 14 и 17.
Можно подумать, что он когда-то красивый был.
C++ изуродован изначально. Я был бы не против получить из него какой-нибудь D с возможностью присобачивать туда С. Какие блэт инклюды в 2к17??? Где модули???
0xc0de
> Предлагаю обсудить здесь, что нравится и что не нравится в стандартах
"Тут и началась драка..." /из анекдотов про Штирлица/
Может микрософт хочет сделать кото-песа ?
С течением времени в С++ обнаруживаются возможности для создания конструкций которые довольно часто стреляют, от них пытаются избавиться путем введения новых возможностей, так появляются новые стандарты языка. С одной стороны это конечно неплохо и во многом развязывает руки разработчику, позволяя писать более совершеннный код. Но с другой стороны возрастает сложность языка, количество легаси кода, сопровождаемого трудностями связанными с его поддержкой и трудностями связанные с поиском квалифицированного персонала.
C++ уже не нужен, есть Rust
0xc0de
> что нравится и что не нравится
плюсы это свалка всевозможных подходов к программированию, растущая год от года, что в этом плохого? : )
Sh.Tac.
в этом плохого то, что эти стандартизаторы хреновы
не могут консистентный язык сделать
в каком стандарте такой код станет нормальным?
struct Color { unsigned value; constexpr explicit Color(unsigned value) : value( value) {} constexpr static Color rgba( unsigned red, unsigned green, unsigned blue, unsigned alpha) { return Color( ( ( alpha & 0xffu) << 24) + ( ( red & 0xffu) << 16) + ( ( green & 0xffu) << 8) + ( blue & 0xffu)); } constexpr static Color rgb( unsigned red, unsigned green, unsigned blue) { return rgba( red, green, blue, 255u); } constexpr static Color black = rgb( 0, 0, 0); };
cNoNim
ты забыл throw/nothrow, инлайны, private/public, const геттеры, виртуальный деструктор, цвета создаются через фабрику а не вонючие статики, нокопиабле/приватный == copy
cNoNim
> в каком стандарте такой код станет нормальным?
value у тебя для галочки, тут проще namespace : )
но в целом понятно, компайл-тайм в несколько проходов я бы тоже не стал делать
cNoNim
Sh.Tac.
> тут проще namespace
дак оно на неймспейсах уже сделано давно,
но вот нафига пихать в язык кучу фич, которые друг с другом не совместимы,
а потом в новых стандартах делать еще и затычки под эти фичи, я не совсем понимаю
inline static это же полный ад, не?
я вот сюда смотрю
http://en.cppreference.com/w/cpp/language/static
и у меня волосы на голове шевелются
Sh.Tac.
> компайл-тайм в несколько проходов я бы тоже не стал делать
а вообще не только много проходный комплайл-тайм решил бы...
как ты верно заметил на неймспейсах все работает,
если бы они упростили обработку классов до уровня неймспейсов,
то и на классах бы все завелось, но сейчас это уже нарушает обратную совместимость мать ее )
так что я последнее время думаю, что вряд ли из С++ когда нибудь ченить годное получится,
надо ему кол в сердце и сжечь
а все ресурсы которые тратятся на его поддержку, по бырому перенести на какой нить раст
cNoNim
> inline static это же полный ад, не?
static прикольный, я как-то попробовал
struct Foo { static int bar = 0; };
Тема в архиве.