зима. сезон дождей в СФ.

я прилетел в СФ на 14 февраля, в далеком теперь уже 2008 году.
по несколько раз на дню город преображался, и я бродил по нему в немом восторге, вдыхая тончайшее кружево разноцветного тумана над Президио и Мариной, где Лукасфильм.

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

и вот теперь, почти 9 лет спустя, я еду в автобусе, и до меня медленно доходит,
что в С++17 приняли не то предложение о порядке вычисления выражений
которое делало всё нормально, p0431 авторства уважаемого Hyman Rosen,
а то, где всё набекрень, и невозможно запомнить что в каких случаях где, p0145 авторства достопочтенного Херба “f(new T, new T)” Саттера, Габриэля дос Рейса и Джонатана Кейва.

я был весь в предвкушении вкусовых микровзрывов шоколадных бомбочек от Christopher Elbow, и оттуда – в Davies Symphony Hall, на титанического Ефима “ланг ланг свободен” Бронфмана с Четвёртым Бетховена, и, – самое волшебное, – на девяностолетнего Бломстедта с Третьей Брамса и внезапно полным богатым европейским звуком оркестра, словно наши уважаемые музыканты в SF Symphony вдруг вспомнили свои ещё такие недавние корни от лёгкого движения бровей маэстро.

и тут - бам! - понимаю, что пропоузал приняли таки не тот!

@Zeux: Я правильно понимаю, что вместо того чтобы зафиксировать left-to-right eval order везде, они чего-то там захачили про операторы и все?

@aruslan: они сделали 2@=1 и ещё всякого, но не до конца и довольно неряшливо.
и ладно бы никто не догадывался, но p0431 как раз начинается с мотивирующего примера:

  int &a(); int &b();
  int main() {
    a() << b();
    a() += b();
    a() == b();
  }

где раньше всё было просто unspecified, а после p0145 в первом случае – a() вычисляется до b(), во втором – после, а в третьем – как раньше.

и ведь самое время было для ясных простых правил: там сейчас чистая поляна, порядок либо не определён либо UB.
но нет, комитет предпочел наскипидариться.

@Zeux: эх.
ну хоть в map можно будет писать.
но конечно мда.

@aruslan: т.е. понятно я не за себя беспокоюсь,
но одно дело с умным видом объяснять готичность правил ссылаясь на 36-битные слова, Unisys и тэгированные архитектуры,
и совсем другое – признавать что это просто комитет начудил.

вот это одно конкретное изменение могло убить “коварные” вопросы на интервью и вполне реальные очень subtle две-недели-в-отладчике баги.
могло бы.
но нет.

@nobuddhy: карту торфяных болот можно знать, чтобы держаться от них подальше, или чтобы ходить на них в экспедицию по спасению тех, кто не знает, или ходить туда ради адреналина, ноуки и уточнения карты (на то оно и болото, чтобы булькать и терраморфироваться).
из разговоров о болоте обычно трудно понять, зачем человек его изучает.
когда таких вопросов на интервью много, у меня тревожная лампа мигает во всю силу.
если бы я вставлял в интервью что-то подобное, то хотел бы услышать
“я таких особенностей языка по доброй воле и без крайней необходимости не использую, но если нужно, то разберусь.
надеюсь, у вас такое случается один или менее раз в год, не так ли?”,
а апликанту потом ловить нотки нервозности и фальши в ответном хихиканьи
“конечно-конечно, именно так у нас и есть!”.
самурай конечно должен уметь убить и палочками для риса, но обычно использует катану,
а ситуация, когда из доступного оружия только анальный зонд –
она вообще-то для самурая оскорбительна сама по себе.

@aruslan: ты как-то прямо скажем сгустил.

@nobuddhy: воспринимаю это как комплимент!
Но на мифологическом уровне я все это категорически поддерживаю.
И миазмы, и шаманов, приходящих в религиозный экстаз от вдыхания оных. Прекрасно служит повышению ценности профессии!

@aruslan: у тебя безусловно более глубокий уровень зачерпывания.

я как-то всё больше предпочитаю скользить.
для меня самые интересные срезы С++
pointer provenance, std::launder, sequenced-before и, безусловно, тернарный оператор –
они как свеженасыпавшийся снежок на длиннющем склоне.

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

пухляк превращается в powder,
вот позади нарастающий шум приключения,
первые языки лавины слизывают соратников,

входишь в вираж,
порох под ногами с пронзительным басовитым свистом вдруг начинает чертить дуги шутих,
резко уходишь в сторону, уворачиваясь от ошмёток medium rare тех кто шёл на повышенных уровнях оптимизации,
и становится чутка сцыкотно, и хочется вдруг взять и ехать по обычной трассе,
с нормальными подъемниками, среди таких обычных, таких родных людей, по жестковатому но уверенному и простому снегу,
даже видишь впереди что-то типа обычной трассы,

влетаешь туда снежной двухметровой волной в повороте,
и запоздало понимаешь, что – уфхцч! – не тот пропозал взяли в стандарт,
забираешь вверх по склону пока хватает скорости, но

снег чавкающим ковром тянет вниз,
а порядок вычислений казавшийся таким естественным – рвёт снежную ткань,
и вот уже под ногами камни, мелкие сосенки и
остовы горящих кораблей, и над головой на опережение пролетают
отяжелевшие крешдампы,

вдруг снег окрашивается кроваво-чёрным, всё становится кристально прозрачным – как во сне, когда всё одновременно чётко и в фокусе, и ты хладнокровно разрываешь точки сборки отладчика, и находишь, находишь ту совершенно невинную лишнюю пару скобок которую поставил твой соратник, и ты хватаешь их, и

(оригинал на кружках)