13:40 с незапамятных времён в C (под winavr) писал битовые маски через 0b и даже не задумывался, что это, оказывается, расширение языка. Но ещё бОльшим удивлением стало то, что в плюсах такая простая вещь появилась относительно недавно))
@idiotsiuda3 жыл бұрын
22:54 другие компиляторы в итоге научились?
@DadundddaD Жыл бұрын
2014: мы выпустили новый стандарт: пользуйтесь, радуйтесь Спустя 6 лет: P.S. Немного обидно за авторов нововведений
@MrDimonsky2 жыл бұрын
32:30 std::get(t) не передан параметр t
@PVSStudioTool2 жыл бұрын
Да, пропустили этот момент на слайде. Спасибо что увидели и написали об этом)
@KIR_Engineer3 жыл бұрын
Отличная лекция. Можете залить, пожалуйста, презентацию на гугл или яндекс диск? Нету странички в ВК, не могу скачать.
@KIR_Engineer3 жыл бұрын
Теперь удалось скачать. Спасибо большое. 😃👍
@PVSStudioTool3 жыл бұрын
@@KIR_Engineer Обратите внимание, что тут с 85 слайда начинается вторая лекция :) vk.com/doc-163428578_519103873
@KIR_Engineer3 жыл бұрын
@@PVSStudioTool Понял. Спасибо. Иногда возникает желание освежить в памяти стандарты и лекцию. Спасибо за Ваш труд 😃👍
@2b1aa15 жыл бұрын
make_shared понятно алокация для счётчика ссылок, а make_unique а что алоцируется в unique?
@PVSStudioTool5 жыл бұрын
make_unique динамически аллоцирует объект типа T, идеально передавая список параметров в конструктор T, и сразу оборачивает указатель в std::unique_ptr. Польза заключается в следующих вещах: 1) теперь можно забыть об использовании new-delete в свежем коде. make_unique не требует написания new, а умный указатель освободит ресурсы, вызвав delete (или кастомный deleter). 2) make_unique безопасен для создания временных умных указателей в случае бросания исключений. Рассмотрим следующий код: foo(unique_ptr(new T()), unique_ptr(new U())); Порядок вычисления аргументов в С++ является неуточненным поведением (unspecified behavior). Порядок может быть таким: new T -> unique_ptr -> new U -> unique_ptr. А может быть и таким: new T -> new U -> unique_ptr -> unique_ptr. Во втором случае, если при аллокации U будет брошено исключение, то остается неосвобожденный ресурс T. make_uniqueрешает эту проблему: foo(make_unique(), make_unique()); Если какая-либо динамическая аллокация бросит исключение, то теперь умный указатель освободит ресурс.
@eugenesasin27574 жыл бұрын
Главная задача этих функций не оптимизация аллокаций памяти, а возможность сделать создание умных указателей безопаснее с точки зрения исключений.