C++ требует серьезного подхода. Поэтому мы верим, что большинство плюсовиков — серьезные профессионалы, и если на праздниках требуется сидеть дома — они не будут выбираться на шашлыки тайными тропами, а предпочтут в это время расти как специалисты. И таким профессионалам на этих праздниках пригодится наш топ-10 докладов с конференции C++ Russia 2019 Piter:
![](https://habrastorage.org/r/w780q1/webt/n7/o1/oh/n7o1ohkue8hlmx3khuregrljymg.jpeg)
Павел раскрыл нюансы реализации стандартной библиотеки C++ и продемонстрировал, как использование типов и алгоритмов из стандартной библиотеки может повлиять на производительность приложения.
Арно выступал с очень важной и опасной темой — время жизни rvalue-объектов. Они были введены в язык, чтобы сделать управление памятью более эффективным, но появились неожиданные проблемы: при передаче rvalue в виде const&-параметров и при временном продлении времени жизни rvalue. Они приводят к сложному для дебаггинга повреждению памяти приложения. Арно объясняет суть проблем и предлагает решение с помощью библиотечного кода без изменений в языке.
Хана рассказала об изменениях в библиотеке Compile Time Regular Expression (CTRE), о её новом движке — Finite Automaton (FA) — и чем он хорош по сравнению с предыдущим движком — Back Tracking.
Доклады Ивана на С++ Russia всегда очень интересные и полезные. На прошлой C++ Russia 2019 Piter он рассказал о технике тэгирования в C++. Обязательно посмотрите доклад, если вы не знаете, что это такое.
Работа Эрика над библиотекой ranges изменила современный C++. В своем докладе он рассказал, почему future так тормозит, что такое executor, что общего между корутинами и коллбэками и почему абстракция «Task» хорошо ложится на всевозможные асинхронные алгоритмы.
В своем докладе на конференции Бьорн Фаллер собрал разные приемы современного C++, позволяющие писать более простой и надежный код.
Роман Русяев продемонстрировал, когда делать сборку своего приложения с -fno-exceptions имеет смысл, а когда можно использовать C++ исключения, зная, что код не потерял в производительности. Примеры реализации исключений и компиляторных оптимизаций рассматриваются на базе LLVM.
Тимур рассказал о техниках каламбура типизации (type punning), появившихся в C++20, а также о том, когда и как каламбур типизации можно использовать, не рискуя вызвать неопределенное поведение (undefined behaviour).
Также Тимур говорил о важных понятиях в C++: время жизни объекта (object lifetime), его представление (object representation) и правила алиасинга (aliasing rules).
В своем выступлении Михаил ответил на такие вопросы как: когда для переменной или функции стоит указывать static и inline? const и constexpr? Что насчет consteval и constinit? Как всё это взаимодействует с шаблонами?
Закрывает топ лучших докладов C++ Russia 2019 Piter доклад Антона Полухина, в котором собраны нетиповое и эффективное решение типовых задач:
— Паттерн Pimpl — но без динамических аллокаций;
— Быстрое логирование пользовательских типов — но, по возможности, без std::ostream и локалей;
— Конвертация из JSON/XML/YAML/… в пользовательские типы — но c ADL и переиспользованием кода (почти что перегрузка функций по возвращаемому значению).
![](https://habrastorage.org/webt/n7/o1/oh/n7o1ohkue8hlmx3khuregrljymg.jpeg)
И еще одна потрясающая новость! На конференции С++ Russia 2020 Moscow, которая пройдет в онлайне уже скоро, выступит легендарный Bjarne Stroustrup.
10 место:
«Под капотом стандартной библиотеки C++» — Павел Новиков
Павел раскрыл нюансы реализации стандартной библиотеки C++ и продемонстрировал, как использование типов и алгоритмов из стандартной библиотеки может повлиять на производительность приложения.
9 место:
«The C++ rvalue lifetime disaster» — Arno Schoedl
Арно выступал с очень важной и опасной темой — время жизни rvalue-объектов. Они были введены в язык, чтобы сделать управление памятью более эффективным, но появились неожиданные проблемы: при передаче rvalue в виде const&-параметров и при временном продлении времени жизни rvalue. Они приводят к сложному для дебаггинга повреждению памяти приложения. Арно объясняет суть проблем и предлагает решение с помощью библиотечного кода без изменений в языке.
8 место:
«A state of сompile time regular expressions» — Hana Dusíková
Хана рассказала об изменениях в библиотеке Compile Time Regular Expression (CTRE), о её новом движке — Finite Automaton (FA) — и чем он хорош по сравнению с предыдущим движком — Back Tracking.
7 место:
«Compile time type tagging» — Ivan Čukić
Доклады Ивана на С++ Russia всегда очень интересные и полезные. На прошлой C++ Russia 2019 Piter он рассказал о технике тэгирования в C++. Обязательно посмотрите доклад, если вы не знаете, что это такое.
6 место:
«A unifying abstraction for async in C++» — Eric Niebler
Работа Эрика над библиотекой ranges изменила современный C++. В своем докладе он рассказал, почему future так тормозит, что такое executor, что общего между корутинами и коллбэками и почему абстракция «Task» хорошо ложится на всевозможные асинхронные алгоритмы.
5 место:
«Modern techniques for keeping your code DRY» — Björn Fahller
В своем докладе на конференции Бьорн Фаллер собрал разные приемы современного C++, позволяющие писать более простой и надежный код.
4 место:
«Исключения C++ через призму компиляторных оптимизаций» — Роман Русяев
Роман Русяев продемонстрировал, когда делать сборку своего приложения с -fno-exceptions имеет смысл, а когда можно использовать C++ исключения, зная, что код не потерял в производительности. Примеры реализации исключений и компиляторных оптимизаций рассматриваются на базе LLVM.
3 место:
«Type punning in modern C++» — Timur Doumler
Тимур рассказал о техниках каламбура типизации (type punning), появившихся в C++20, а также о том, когда и как каламбур типизации можно использовать, не рискуя вызвать неопределенное поведение (undefined behaviour).
Также Тимур говорил о важных понятиях в C++: время жизни объекта (object lifetime), его представление (object representation) и правила алиасинга (aliasing rules).
2 место:
«Спецификаторы, квалификаторы и шаблоны» — Михаил Матросов
В своем выступлении Михаил ответил на такие вопросы как: когда для переменной или функции стоит указывать static и inline? const и constexpr? Что насчет consteval и constinit? Как всё это взаимодействует с шаблонами?
1 место:
«C++ трюки из Такси — Антон Полухин»
Закрывает топ лучших докладов C++ Russia 2019 Piter доклад Антона Полухина, в котором собраны нетиповое и эффективное решение типовых задач:
— Паттерн Pimpl — но без динамических аллокаций;
— Быстрое логирование пользовательских типов — но, по возможности, без std::ostream и локалей;
— Конвертация из JSON/XML/YAML/… в пользовательские типы — но c ADL и переиспользованием кода (почти что перегрузка функций по возвращаемому значению).
Топ-10 — это квинтэссенция конференции, но, конечно, еще не все. Откройте для себя еще больше нового в полном плейлисте. А летом мы проведем С++ Russia 2020 Moscow онлайн — так что участвовать можно из любой точки планеты. И благодаря этому поучаствует даже Bjarne Stroustrup — в этом году на конференции можно будет задать ему вопрос! А еще можно проапгрейдиться до абонемента — и получить доступ сразу к восьми конференциям летнего сезона.