C++ and other lectures
Учебный канал в Телеграм: тут будут анонсы и ссылки на лекции и стримы. Написать автору: @Tilir Boosty автора: https://boosty.to/cpp_lects_rus
Show more📈 Analytical overview of Telegram channel C++ and other lectures
Channel C++ and other lectures (@cpp_lects_rus) in the Russian language segment is an active participant. Currently, the community unites 10 014 subscribers, ranking 12 157 in the Technologies & Applications category and 63 447 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 10 014 subscribers.
According to the latest data from 27 October, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by 52 over the last 30 days and by 4 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 87.99%. Within the first 24 hours after publication, content typically collects 33.73% reactions from the total number of subscribers.
- Post reach: On average, each post receives 8 812 views. Within the first day, a publication typically gains 3 378 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 98.
- Thematic interests: Content is focused on key topics such as компилятор, c++, llvm, struct, compilers.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“Учебный канал в Телеграм: тут будут анонсы и ссылки на лекции и стримы.
Написать автору: @Tilir
Boosty автора: https://boosty.to/cpp_lects_rus”
Thanks to the high frequency of updates (latest data received on 28 October, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
void a(T& x) { x = t(x); } // a from t
T t(T x) { a(x); return x; } // t from a
Но см. ниже, этот дуализм работает не всегда.
18:38 Laws of exclusivity
std::vector a{0, 1, 1, 0};
erase(a, a[0]);
println("{}", a);
Не запуская годболт, догадайтесь что будет на экране. Потом посмотрите пример. Удивительно, но это даже не UB.
Далее Парент приводит правила исключения одновременных ссылок для Swift и Rust. Фактически то же правило есть в C++ (если вы не хотите проблем), но убедиться в его соблюдении -- задача разработчика.
29:05 Projections and Objects
Проекция это получение ссылки на часть объекта. Проекции могут быть инвалидированы как итераторы для контейнера или как отображение или как повисшая ссылка и т.д.
Оказывается дуализм между действием и трансформацией, описанный выше работает только для инкапсулированных (contained) объектов, но не для их проекций. Нам нужно чтобы выполнялся equational reasoning -- свободная замена равных подвыражений в выражениях.
Главное при проектировании типа для объектов это отношение часть/целое. Это отношение обладает свойствами связанности, ацикличности, сепарабельности и владения.
Если бы у нас были только отношения части и целого, то проблема, поставленная в начале, была бы решена. Увы, мир сложнее.
45:20 Extrinsic relashionships
Внешними называются все отношения, которые не часть/целое: хранение невладеющего указателя, хранение ключа или индекса на внешний массив, ссылка на глобальную переменную, использование примитивов синхронизации.
Важнейшая лемма, которой суммируется доклад: для возможности рассуждать о программе локально, внешние отношения между классами должны быть инкапсулированы в класс-владелец, хранящий их корректность в качестве своего инварианта.
54:40 Structural complexity
Проблема трёх тел как пример внешних взаимосвязей, приводящих к непредсказуемости системы. Виды структурной зависимости: деревья, полидеревья, DAG, полные графы. Фактически только структурная зависимость в форме деревьев решает поставленную проблему.
01:05:24 Summary
---
От себя добавлю что именно такого рода разматывание внешних связей между сущностями и то, как это привело к гораздо лучшему проектированию генератора llvm-snippy, я показывал на Zero-cost conf прошлого года. Но там от меня это был конкретный пример проектирования, к тому же изрядно перемешанный с деталями предметной области. Здесь же Шон Парент даёт очищенную эссенцию такого подхода, практически с математической точностью формулировок.
#talks template<typename T> struct A {
typedef int M;
struct B {
typedef void M;
struct C;
struct D;
};
};
template<typename T> struct A<T>::B::D : A<T*> {
M m;
// expected-error@-1 {{field has incomplete type 'M' (aka 'void'}}
};
А вот тут он ошибки не ожидает, это должно работать:
template<typename T> struct G {
struct B {
typedef int M;
struct C {
typedef void M;
struct D;
};
};
};
template<typename T> struct G<T>::B::C::D : B {
M m;
};
Я полагаю, достойные студенты растут. Боевые. Самому иногда страшно становится.
#cpp_postgraduate