Лекция 3. Вывод типов в C++

  Рет қаралды 6,173

PVS-Studio Ru

PVS-Studio Ru

Күн бұрын

Пікірлер: 13
@Selfrock_Vladimir
@Selfrock_Vladimir Жыл бұрын
Классные лекции, подпишусь пожалуй
@kpanat
@kpanat Жыл бұрын
Здесь рассмотрен только 1 уровень приведеня и вывода типов а он может быть выше например 2-й, 3-ий и тд. Например двойные указатели указатели на ссылку двойые указатели на ссылку. Но у ссылок уровень всегда 1-ый. Т.е. вы не можете написать вот так int &**&*&&a; Так нельзя. Ссылку можно написать только так. int **&a; или int ****&a; Но даже int &*a; нет... Ссылка(двойная ссылка или правая как её принято называть) всегда последняя. А вот квалификаторы const можно расставлять произвольно как и volftile. Получаются довольно сложные конструкции. Но тут есть логика которая прослеживается но о которой почему-то не сказано, хотя рассказано довольно подробно. Но на практике так не делают, а руководствуются как раз тем о чём не говорили. Но это уже другой уровень понимания. Если вы его достигли то все эти правила можете выкинуть они автоматом оттуда следуют. Вы их сами всегда можете выписать и даже намного больше и сложнее. Так что учитесь и обрящете.
@kpanat
@kpanat Жыл бұрын
Да это должно быть на уровне чувств вы должны ощущать какой тип будет и это должно быть автоматом без вопросов. Иначе что же вы каждый раз будете сверятся с табличкой и смотреть а какой же тип там получится... и пока так не будет у вас проблемы... Учите, повторяйте это сколько надо раз пока вы нутром чувствовать не будете какой там тип будет. Ой...
@theK0sh
@theK0sh 5 жыл бұрын
Наверное, сначала нужно было отдельный слайдом рассказать о правилах свертки ссылок (reference collapsing), а потом уже на основе этих знаний говорить о выводе аргументов шаблона в вызовах шаблонных функций и о правилах вывода типов для auto и decltype. Возможно, было бы понятней для тех кто мало знаком с темой. Так же возможно стоило отдельно вначале объяснить о низводящих (decay) преобразованиях, которые происходят для параметров, объявленных по значению, рассказать о низведенных типах. Это позволило бы дать более формальное объяснение того, почему, например отбрасываются ссылки или константность.
@PVSStudioTool
@PVSStudioTool 5 жыл бұрын
Спасибо за комментарий. Тема довольно сложная, поэтому могли упустить некоторые детали повествования. Учтем при записи следующих образовательных видео.
@tertiumorganum5665
@tertiumorganum5665 Жыл бұрын
ребят, что за сложности выложить в телеге презентацию? не, понятно, у меерса все есть, но блин. в вк нифига не пашет, ругается: группа не та
@PVSStudioTool
@PVSStudioTool Жыл бұрын
Выложили лекции с презентациями) Спасибо за идею)
@user-wu3vd7dd2r
@user-wu3vd7dd2r 5 жыл бұрын
Филипп, 26:50 кастуем к Rvalue же да? или я не прав?
@PVSStudioTool
@PVSStudioTool 5 жыл бұрын
Не совсем. Нужно запомнить одно правило - когда в коде видим/пишем T &&, где T - это шаблонный параметр, то такая ссылка называется forwarding-ссылкой (Скотт Мейерс ее называл универсальной ссылкой до того, как утряслась официальная терминология). Соответственно, кастуем мы к forwarding-ссылке. Однако затем, когда дело дойдет до инстанцирования, такая ссылка превратится либо в левую, либо в правую после вывода типов в результате свертки ссылок (reference collapsing).
@ДмитрийСадков-е8ц
@ДмитрийСадков-е8ц 2 жыл бұрын
На слайде про decltype(auto) kzbin.info/www/bejne/jHaWmKJtpsh6ZpY судя по всему есть опечатка. decltype(auto) v9 = foo(); // int ()(), compile-time error decltype(auto) v10 = bar(); // int&& ()(), compile-time error должно быть decltype(auto) v9 = foo; // int ()(), compile-time error decltype(auto) v10 = bar; // int&& ()(), compile-time error
@PVSStudioTool
@PVSStudioTool 2 жыл бұрын
Да, там действительно опечатка. Спасибо за прозорливость)
@АртёмПопов-у2н
@АртёмПопов-у2н Жыл бұрын
Видео про то, как чел с умным видом ведущего разработчика пересказывает свой конспект на первую главу книги Майерса "Эффективный и современный С++11/14". Не понятно на кого рассчитан данный материал: если на новичков, то завершающая фраза "Всё просто!" звучит как троллинг, если на опытных разработчиков, то ничего нового не рассказано. Ещё раз: это просто пересказ "удар в удар" (даже примеры идентичны), этакая аудио-версия. Видео можно было сократить до 10 секунд записав на нём: "Про вывод типов в C++ читайте первую главу у Майерса в книге (см. выше), там рассказано то, что я бы мусолил 53 минуты. Всё просто!"
Лекция 4. Нововведения стандарта С++17
1:35:23
Лекция 1.  Нововведения стандарта C++11
1:58:15
Что-что Мурсдей говорит? 💭 #симбочка #симба #мурсдей
00:19
Chain Game Strong ⛓️
00:21
Anwar Jibawi
Рет қаралды 41 МЛН
Лекция 2. Нововведения стандарта C++14
37:04
Лекция 12. С++20 и обозримое будущее
1:37:06
PVS-Studio Ru
Рет қаралды 6 М.
Стандарт C++11/14: вывод типов и move семантика
2:08:05
Computer Science Center
Рет қаралды 11 М.
Лекция 9. Метапрограммирование в С++
1:39:44
Язык C++ с нуля в одном видео уроке за час!
1:16:47
Программист86
Рет қаралды 167 М.
Всё об указателях в C++ за 20 минут
20:00
для всей семьи
0:56
Стакановец
Рет қаралды 191 М.
ЛАЙФХАК НА КУХНЕ ! 🧐🤦🏻‍♂️ #shorts #лайфхак
0:15
Крус Костилио
Рет қаралды 109 М.
ПОСТАРЕЛА ЗА 1 ДЕНЬ НА 20 ЛЕТ - МУЖСКОЕ ЖЕНСКОЕ
55:44
ПРИЯТНЫЙ ИЛЬДАР
Рет қаралды 677 М.
Pixel 7 и 7 Pro с Face ID - лучше iPhone 14 Pro!
21:12
Rozetked
Рет қаралды 457 М.
The Million view clip on China's Tiktok P2428 #shorts #gochannel
0:15
Go Channel TV
Рет қаралды 29 МЛН
ЛИТВИН / ПРАНК С ГРИМОМ / Shorts #upx #shorts
0:59