filmov
tv
C++ lectures at MIPT (in Russian). Lecture 16. Metaprogramming
![preview_player](https://i.ytimg.com/vi/UJqW_eEBA6I/maxresdefault.jpg)
Показать описание
Лекции в магистратуре МФТИ по C++ на русском языке.
На этой лекции мы закончим разговор о SFINAE, рассмотрев два её прикладных аспекта: static_assert и enable_if, а далее двинемся в область метапрограммирования.
В конце лекции начинается самая жара: я не останавливаюсь на простых метапрограммах, а показываю реалистичные примеры из Boost::MPL и Boost::Fusion, кажется на русском такого вообще не было
Лектор: Константин Владимиров
Дата лекции: 14 апреля 2020 года
Звук: Дмитрий Рябцев
Errata:
* докладчик немного запутался когда рассказывал про трюки с enable_if
template typename = enable_if_t не работает, потому что тут enable_if в параметре по умолчанию. В свою очередь, template enable_if_t<....., int> = 1 работает, потому что тут разрешиться должен сам тип шаблонного параметра. Очень разные вещи
* кроме того разумеется unordered map это O(1+) а не O(lgN)
На этой лекции мы закончим разговор о SFINAE, рассмотрев два её прикладных аспекта: static_assert и enable_if, а далее двинемся в область метапрограммирования.
В конце лекции начинается самая жара: я не останавливаюсь на простых метапрограммах, а показываю реалистичные примеры из Boost::MPL и Boost::Fusion, кажется на русском такого вообще не было
Лектор: Константин Владимиров
Дата лекции: 14 апреля 2020 года
Звук: Дмитрий Рябцев
Errata:
* докладчик немного запутался когда рассказывал про трюки с enable_if
template typename = enable_if_t не работает, потому что тут enable_if в параметре по умолчанию. В свою очередь, template enable_if_t<....., int> = 1 работает, потому что тут разрешиться должен сам тип шаблонного параметра. Очень разные вещи
* кроме того разумеется unordered map это O(1+) а не O(lgN)
C++ Lectures at MIPT (in Russian). Lecture 1. Strings.
Базовый курс C++ (MIPT, ILab). Lecture 1. Scent of C++.
C++ lectures at MIPT (in Russian). Lecture 10. Coroutines, part 1
C++ lectures at MIPT (in Russian). Lecture 18. Concepts
C++ lectures at MIPT (in Russian). Lecture 4. Exceptions, part 1
C++ lectures at MIPT (in Russian). Lecture 3. Class templates, part 1
C++ lectures at MIPT (in Russian). Lecture 12. Concurrency, part 1
C++ lectures at MIPT (in Russian). Lecture 9a. Monads
Базовый курс C++ (MIPT, ILab). Lecture 3. Имена и сущности
SIMD и ручная векторизация (доп. семинар для первого курса по языку C и алгоритмам)...
C++ lectures at MIPT (in Russian). Lecture 14. Allocators, part 1
C++ lectures at MIPT (in Russian). Lecture 20. Modules
Базовый курс C++ (MIPT, ILab). Lecture 21. LLVM, часть 1
C++ lectures at MIPT (in Russian). Lecture 4. Exceptions, part 2
C++ lectures at MIPT (in Russian). Lecture 13. Atomicity, part 3
C++ lectures at MIPT (in Russian). Lecture 11. Asynchronous programming, part 1
C++ lectures at MIPT (in Russian). Lecture 13. Atomicity, part 1
MIPT CTF 2015-2016, Lecture 3, Intro: Eval
C++ lectures at MIPT (in Russian). Lecture 19. Ranges, part 1
The Pain of OOP, Lecture #1: Algorithms
C++ lectures at MIPT (in Russian). Lecture 16. Metaprogramming
C++ lectures at MIPT (in Russian). Lecture 15. SFINAE
C++ lectures at MIPT (in Russian). Lecture 19. Ranges, part 2
C++ lectures at MIPT (in Russian). Lecture 12. Concurrency, part 2
Комментарии