Магистерский курс C++ (МФТИ, 2022-2023). Лекция 6. SFINAE.

preview_player
Показать описание
Лекции в магистратуре МФТИ по современному C++ на русском языке. Кафедра микропроцессорных технологий.

Эта лекция посвящена инстанцированию. Мы сначала разовьём тему инстанцирования для модулей, а дальше посмотрим на SFINAE и на его внезапные, хотя иногда и смонительные, но очень полезные возможности.

Лектор: Константин Владимиров.
Дата лекции: 12 октября 2022 года.
Съёмка и звук: Юлий Тарасов.

Timeline:
00:00 Семантические процессы
02:40 Глобальный фрагмент и инстанцирование
16:30 Ленивость
28:10 Провал подстановки и ошибки
40:30 Партизанское SFINAE
51:00 Отображения
01:00:45 Шаблоны переменных и Unwrap
01:10:52 Определители и модификаторы
01:19:51 void_t и системный подход
01:27:56 Заключение: настоящее место SFINAE

Errata:
* тут пока пусто
Рекомендации по теме
Комментарии
Автор

Спасибо, что выкладываете в свободный доступ бесценные знания. Когда чего то не понимаю, иду пересметривать ваши лекции)

o.t.
Автор

Спасибо за лекцию. Конечно, многопоточечка ван лав!

pavelrid
Автор

Почему-то до этой лекции я не думал о SFINAE для классов (хотя это ж очевидно!). Применял только для функций и методов. Спасибо за расширение познаний!

ddcd
Автор

Слайд 19: непонятно, почему is_same_v нельзя определить как Ведь ::type - это базовый тип нашего предиката - true_type или false_type, а его ::value это и есть значение типа bool которое "зашито" в этот базовый тип. С другой стороны, is_same<....>::value - это то же самое - мы проваливаемся до того же самого value в "булевом типе", от которого отнаследовались, то есть вроде бы в обоих случаях обращаемся к одному и тому же value.

Денис-ььс
Автор

Интересно, применяется ли подход с ленивым инстанцированием методов к обычным (нешаблонным) классам (можно представить обычный класс как вырожденный случай "шаблона без параметров", имеющего единственну "специализации")? И если нет, то почему?

Денис-ььс
Автор

Я не помню если вы это говорили, думаю это важно: задавая тип параметра шаблона, мы исключаем из рассмотрения все не шаблонные функции.

arturzaiat
Автор

Спасибо, за лекцию. У Вас ошибка в описании к видео, в слове "сомнительные": "... на его внезапные, хотя иногда и смонительные, но очень полезные возможности ..."

ВладимирЕгоров-мж
Автор

Классные лекции! И в этот раз я понял зачем is_same_t.

СеменЦимбалюк-фл
Автор

deducing this ака Explicit object parameter убирает изоленту CRTP.

DARTWADER
Автор

Дико извиняюсь, на 4:44 разве верно заключение о "видимости шаблона dump там куда импортирован модуль"? (он виден только для способности шаблона output его инстанцировать) и более нигде. Разве нет?

evgenytarasov
Автор

F11 было бы шикарно для примеров в годболте. +3...5 доп. строчек контекста.

DARTWADER
Автор

Интересно, но на мой взгляд, абсолютно бесполезно в коммерческой разработке и даже вредно

sergey