Недавно Россию посетила группа экспертов С++, участвующих в работе комитета по стандартизации. 25 февраля они участвовали в Q&A сессии, организованной Яндексом, а после выступали на конференции С++ Russia 2016. Одним из них был Гор Нишанов, автор предложения о включении C#-подобных сопрограмм (те которые async/await) в стандарт С++17. Ранее Гор выступал на CppCon 2015 с докладом "[С++ Сопрограммы — Абстракция с отрицательным оверхедом][1]". Такая возможность структурировать асинхронный код выглядит привлекательно, Гор в докладе убедительно показывает, что количество кода сокращается, а скорость работы возрастает по сравнению с «рукописными» State Machine. Кроме того, это одно из самых больших потенциальных изменений в следующем стандарте и привлекает к себе внимание. Судя по публикациям, proposal получил значительное одобрение и комитет склоняется к включению в стандарт. После этого я был весьма удивлен, когда загуглив упомянутый [proposal P0057][2], получил в выдаче встречный документ "[Coroutines belong in a TS][3]", который подвергает предлагаемую реализацию сопрограмм жесткой и весьма эмоциональной критике и требует не включать в С++17, а отложить для «обкатки» в Technical Specification. Отмечу, что не являюсь сторонником этих возражений, а приглашаю интересующихся к обсуждению, насколько обоснованны перечисленные претензии и все ли так плохо. Под катом «выжимка» из документа с небольшими комментариями. [Читать дальше →][4]
[1]:
https://www.youtube.com/watch?v=_fu0gx-xseY
[2]:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0057r2.pdf
[3]:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0158r0.html
[4]:
https://habrahabr.ru/post/278267/#habracut