шаблоны c++
-
Хабрахабр
Stm32 + USB на шаблонах C++. Продолжение’. Делаем MSC
Прошло более полутора лет с последней статьи, посвященной применению современного C++ при разработке программ для микроконтроллеров, а именно USB. За это время удалось покрыть USB OTG FS, а также еще один класс устройств - Mass Storage. Среди изобилия способов организовать обмен данными между устройством и хостом остановился на связке SCSI поверх транспорта Bulk-Only (он же Bulk/Bulk/Bulk), так как, насколько удалось…
Читать далее » -
Хабрахабр
[Перевод] Шаблоны C++: как итерировать по std::tuple — std::apply и еще пара приемов
В предыдущей статье, посвященной перебору элементов кортежей, мы рассмотрели только основы. В результате нашей работы мы реализовали шаблон функции, который принимал кортеж и мог красиво вывести его в консоль. Мы также реализовали версию с оператором <<. Сегодня мы пойдем немного дальше и рассмотрим другие техники. Первая — с применением std::apply из C++17, вспомогательной функции для кортежей. В этой статье также…
Читать далее » -
Хабрахабр
[Перевод] Шаблоны C++: как итерировать по std::tuple — основы
Для большинства стандартных контейнеров перебор элементов можно осуществлять просто с помощью цикла for с диапазоном прямо во время выполнения. Но что насчет кортежей (std::tuple)? В этом случае мы не можем использовать обычный цикл, так как он не “понимает” список аргументов кортежа во время компиляции. В этой статье я покажу вам несколько приемов, которые вы можете использовать для итерации по элементам…
Читать далее » -
Хабрахабр
Металингвистический совратитель Си. Опус II: Рекуррентный экстаз
>> Осторожно, модерн! 2 — 0. 2. Пропажа заначки Год назад, в 15 лет, меня озадачила проблема compile-time имитации алгебраических типов данных в чистом Си. Для этого я создал poica — исследовательский язык на макросах. Серия этих опусов — логическое продолжение моего исследования. Макросистема Си являет собой аналог перезаписи термов из одной известной Тьюринг-полной функциональной модели вычислений — лямбда-исчисления. Имея…
Читать далее » -
Хабрахабр
Металингвистический совратитель Си. Опус I: Предварительные ласки
>> Осторожно, модерн! 2 — 0. 1. Спор на баксы и девчонок Система макросов добавлена в язык программирования Си с целью абстрагирования часто повторяющихся синтаксических конструкций, и как следствие — снижения ментальной нагрузки при чтении и написании исходного кода. Но не всё так радужно… после моих экспериментов в написании нетривиальных метапрограмм на связке Boost/Preprocessor + Boost/VMD я осознал, что с…
Читать далее » -
Хабрахабр
Как скомпилировать декоратор — C++, Python и собственная реализация. Часть 1
Данная серия статей будет посвящена возможности создания декоратора в языке С++, особенностям их работы в Python, а также будет рассмотрен один из вариантов реализации данного функционала в собственном компилируемом языке, посредством применения общего подхода для создания замыканий — closure conversion и модернизации синтаксического дерева. Дисклеймер В данной статье под декоратором понимается не паттерн проектирования, а декоратор в Python — способ…
Читать далее » -
Хабрахабр
Первое впечатление от концептов
Решил разобраться с новой возможностью С++20 — концептами. Концепты (или концепции, как пишет русскоязычная Вики) — очень интересная и полезная фича, которой давно не хватало. По сути это типизация для аргументов шаблонов. Основная проблема шаблонов до С++20 — в них можно было подставить все что угодно, в том числе то, на что они совершенно не рассчитаны. То есть система шаблонов…
Читать далее » -
Хабрахабр
Первое впечатление от концептов
Решил разобраться с новой возможностью С++20 — концептами. Концепты (или концепции, как пишет русскоязычная Вики) — очень интересная и полезная фича, которой давно не хватало. По сути это типизация для аргументов шаблонов. Основная проблема шаблонов до С++20 — в них можно было подставить все что угодно, в том числе то, на что они совершенно не рассчитаны. То есть система шаблонов…
Читать далее » -
Хабрахабр
[Из песочницы] С++, метапрограммирование и регистры микроконтроллера
Привет, Хабр! Вот уже несколько лет все свои проекты для линейки микроконтроллеров stm32 я делаю на C++. За это время у меня накопилось некоторое количество материала, который может быть интересен другим разработчикам. Во избежание лишних вопросов: я использую связку QtCreator+gcc+gdb+openocd. Как с ней работать, описано многократно, поэтому не буду на этом останавливаться, а вот о своих подходах к работе с…
Читать далее » -
Хабрахабр
Статическая подписка с использованием шаблона Наблюдатель на примере С++ и микроконтроллера Cortext M4
Всем доброго здравия! В преддверии Нового года хочу продолжить рассказывать про использование С++ на микроконтроллерах, на этот раз попытаюсь рассказать про использование шаблона Наблюдатель (но далее я буду называть его Издатель-Подписчик или просто Подписчик, такой вот каламбур), а также реализацию статической подписки на С++17 и преимущества этого подхода в некоторых приложениях. Введение С его помощью, например, делают обработку нажатия кнопок…
Читать далее »