Tap to unmute

Лекция 9. Метапрограммирование в С++

  Рет қаралды 7,493

PVS-Studio Ru

PVS-Studio Ru

Күн бұрын

Пікірлер: 13
@компаниядоставкиЕдадомой.ру
@компаниядоставкиЕдадомой.ру 4 жыл бұрын
самые понятные лекции, круто)
@danquimby8317
@danquimby8317 4 жыл бұрын
наконец то )) а то предыдушие лекции чуть не сдох ))
@noname_2108
@noname_2108 Жыл бұрын
интересно и полезно, спасибо!
@MrDimonsky
@MrDimonsky 3 жыл бұрын
Поражаюсь маленькому количеству просмотров. Нэверю. В топ однозначно.
@theK0sh
@theK0sh 5 жыл бұрын
В функции вычисления всех простых чисел на 40:00 нет необходимости идти на ухищрения для инициализации массива в компайл-тайм. Достаточно использовать zero-initialization: template constexpr auto eratosthenes_sieve() { std::array primes{}; for (size_t i = 2; i < N + 1; ++i) primes[i] = true; for (size_t i = 2; i * i
@PVSStudioTool
@PVSStudioTool 5 жыл бұрын
Можно и так. Ваш пример более читабельный и простой. Главное сохранять баланс между читабельностью и производительностью: весь этот код будет происходить на этапе компиляции. Ведь если таких вычислений много, то компиляция затянется. По идее, в приведенном примере 'constexpr'-эвалюатор сначала заполнит весь массив нулями (false'ами), а затем, начиная с третьего элемента (индекс 2), заполнит массив повторно единицами (значениями 'true'). В исходном варианте инициализация происходит при объявлении. По идее, компилироваться должно пошустрее. Плюс показана такая штука, как std::integer_sequence
@eugenesasin2757
@eugenesasin2757 5 жыл бұрын
22:05 на слайде во время объяснения шаблона с переменным числом параметров перепутали местами 42 и 0.0
@PVSStudioTool
@PVSStudioTool 5 жыл бұрын
Верно. Спасибо за комментарий. Баги встречаются)
@eugenesasin2757
@eugenesasin2757 5 жыл бұрын
@@PVSStudioTool В лекции не хватает перед блоками введения. Например, было бы неплохо перед примерами рассказать про идеи, которые заложены в SFINSE, CRTP, Детекторы...
@kpanat
@kpanat Жыл бұрын
а можно это всё сделать как-то попроще? А то намудрили... Ой... Я вспоминаю C# так там всё проще: просто ваш класс должен наследоваться от соответствующего интерфейса... И усё!!! И они все так... А тут почему так сложно?! Непонятно...
@PVSStudioTool
@PVSStudioTool Жыл бұрын
Как сказал один мудрец в комментах к нашим видео: kzbin.info/www/bejne/gYHYiqGVm7qXrsU&lc=UgzLW5kC9kcDdEY49U94AaABAg А человек не будет развиваться если не давать ему нагрузку на мозг. Если не тренировать мозги то он будет деградировать а потом альцгеймер и усё человек уже и не человек, а растение... Вот метапрограммирование в C++ и помогает бороться с Альцгеймером :)
@kpanat
@kpanat Жыл бұрын
42:31 Вывод конечно отвратительный! Видно идея использовать тут array была явно дебильской... Если такое написать в проекте, то вас точно попросят переписать в виде вектора простых чисел... Потому что булевый массив в котором надо проверять каждый раз true там или false и ещё индексироваться нафик никому не нужен! Трудно было придумать что-то более неудобное, чем это...
@kpanat
@kpanat Жыл бұрын
Да есть алгоритм Brian Kernighan он простой, будет компилиться быстрее! constexpr uint8_t popcount(uint64_t value) noexcept { uint8_t res = 0; for(; value; ++res) { value &= value-1; } return res; }
Лекция 1.  Нововведения стандарта C++11
1:58:15
Mom Hack for Cooking Solo with a Little One! 🍳👶
00:15
5-Minute Crafts HOUSE
Рет қаралды 23 МЛН
It works #beatbox #tiktok
00:34
BeatboxJCOP
Рет қаралды 41 МЛН
Михаил Матросов - Спецификаторы, квалификаторы и шаблоны
58:55
C++ Russia — Конференция по разработке на Cpp
Рет қаралды 15 М.
Лекция 12. С++20 и обозримое будущее
1:37:06
PVS-Studio Ru
Рет қаралды 6 М.
Лекция 4. Нововведения стандарта С++17
1:35:23
024.  Модель памяти C++ - Андрей Янковский
40:03
Yandex for Developers
Рет қаралды 54 М.
Лекция 3. Вывод типов в C++
53:36
PVS-Studio Ru
Рет қаралды 6 М.