шаблоны c++

  • ХабрахабрФото Stm32 + USB на шаблонах C++. Продолжение’. Делаем MSC

    Stm32 + USB на шаблонах C++. Продолжение’. Делаем MSC

    Прошло более полутора лет с последней статьи, посвященной применению современного C++ при разработке программ для микроконтроллеров, а именно USB. За это время удалось покрыть USB OTG FS, а также еще один класс устройств - Mass Storage. Среди изобилия способов организовать обмен данными между устройством и хостом остановился на связке SCSI поверх транспорта Bulk-Only (он же Bulk/Bulk/Bulk), так как, насколько удалось…

    Читать далее »
  • ХабрахабрФото [Перевод] Шаблоны C++: как итерировать по std::tuple — std::apply и еще пара приемов

    [Перевод] Шаблоны C++: как итерировать по std::tuple — std::apply и еще пара приемов

    В предыдущей статье, посвященной перебору элементов кортежей, мы рассмотрели только основы. В результате нашей работы мы реализовали шаблон функции, который принимал кортеж и мог красиво вывести его в консоль. Мы также реализовали версию с оператором <<. Сегодня мы пойдем немного дальше и рассмотрим другие техники. Первая — с применением std::apply из C++17, вспомогательной функции для кортежей. В этой статье также…

    Читать далее »
  • ХабрахабрФото [Перевод] Шаблоны C++: как итерировать по std::tuple — основы

    [Перевод] Шаблоны C++: как итерировать по std::tuple — основы

    Для большинства стандартных контейнеров перебор элементов можно осуществлять просто с помощью цикла for с диапазоном прямо во время выполнения. Но что насчет кортежей (std::tuple)? В этом случае мы не можем использовать обычный цикл, так как он не “понимает” список аргументов кортежа во время компиляции. В этой статье я покажу вам несколько приемов, которые вы можете использовать для итерации по элементам…

    Читать далее »
  • ХабрахабрФото Металингвистический совратитель Си. Опус II: Рекуррентный экстаз

    Металингвистический совратитель Си. Опус II: Рекуррентный экстаз

    >> Осторожно, модерн! 2 — 0. 2. Пропажа заначки Год назад, в 15 лет, меня озадачила проблема compile-time имитации алгебраических типов данных в чистом Си. Для этого я создал poica — исследовательский язык на макросах. Серия этих опусов — логическое продолжение моего исследования. Макросистема Си являет собой аналог перезаписи термов из одной известной Тьюринг-полной функциональной модели вычислений — лямбда-исчисления. Имея…

    Читать далее »
  • ХабрахабрФото Металингвистический совратитель Си. Опус I: Предварительные ласки

    Металингвистический совратитель Си. Опус I: Предварительные ласки

    >> Осторожно, модерн! 2 — 0. 1. Спор на баксы и девчонок Система макросов добавлена в язык программирования Си с целью абстрагирования часто повторяющихся синтаксических конструкций, и как следствие — снижения ментальной нагрузки при чтении и написании исходного кода. Но не всё так радужно… после моих экспериментов в написании нетривиальных метапрограмм на связке Boost/Preprocessor + Boost/VMD я осознал, что с…

    Читать далее »
  • ХабрахабрФото Как скомпилировать декоратор — C++, Python и собственная реализация. Часть 1

    Как скомпилировать декоратор — C++, Python и собственная реализация. Часть 1

    Данная серия статей будет посвящена возможности создания декоратора в языке С++, особенностям их работы в Python, а также будет рассмотрен один из вариантов реализации данного функционала в собственном компилируемом языке, посредством применения общего подхода для создания замыканий — closure conversion и модернизации синтаксического дерева. Дисклеймер В данной статье под декоратором понимается не паттерн проектирования, а декоратор в Python — способ…

    Читать далее »
  • ХабрахабрФото Первое впечатление от концептов

    Первое впечатление от концептов

    Решил разобраться с новой возможностью С++20 — концептами. Концепты (или концепции, как пишет русскоязычная Вики) — очень интересная и полезная фича, которой давно не хватало. По сути это типизация для аргументов шаблонов. Основная проблема шаблонов до С++20 — в них можно было подставить все что угодно, в том числе то, на что они совершенно не рассчитаны. То есть система шаблонов…

    Читать далее »
  • ХабрахабрФото Первое впечатление от концептов

    Первое впечатление от концептов

    Решил разобраться с новой возможностью С++20 — концептами. Концепты (или концепции, как пишет русскоязычная Вики) — очень интересная и полезная фича, которой давно не хватало. По сути это типизация для аргументов шаблонов. Основная проблема шаблонов до С++20 — в них можно было подставить все что угодно, в том числе то, на что они совершенно не рассчитаны. То есть система шаблонов…

    Читать далее »
  • ХабрахабрФото [Из песочницы] С++, метапрограммирование и регистры микроконтроллера

    [Из песочницы] С++, метапрограммирование и регистры микроконтроллера

    Привет, Хабр! Вот уже несколько лет все свои проекты для линейки микроконтроллеров stm32 я делаю на C++. За это время у меня накопилось некоторое количество материала, который может быть интересен другим разработчикам. Во избежание лишних вопросов: я использую связку QtCreator+gcc+gdb+openocd. Как с ней работать, описано многократно, поэтому не буду на этом останавливаться, а вот о своих подходах к работе с…

    Читать далее »
  • ХабрахабрФото Статическая подписка с использованием шаблона Наблюдатель на примере С++ и микроконтроллера Cortext M4

    Статическая подписка с использованием шаблона Наблюдатель на примере С++ и микроконтроллера Cortext M4

    Всем доброго здравия! В преддверии Нового года хочу продолжить рассказывать про использование С++ на микроконтроллерах, на этот раз попытаюсь рассказать про использование шаблона Наблюдатель (но далее я буду называть его Издатель-Подписчик или просто Подписчик, такой вот каламбур), а также реализацию статической подписки на С++17 и преимущества этого подхода в некоторых приложениях. Введение С его помощью, например, делают обработку нажатия кнопок…

    Читать далее »


Кнопка «Наверх»