c++14

  • ХабрахабрФото Ох уж этот std::make_shared…

    Ох уж этот std::make_shared…

    C++ Core Guidelines содержат правило R22, предписывающее использовать std::make_shared вместо вызова конструктора std::shared_ptr. В Core Guidelines приводится всего лишь один аргумент за такое решение — экономия на аллокации (и деаллокации). А если копнуть чуть глубже? std::make_shared полезный Почему вообще в STL появился std::make_shared? Есть канонический пример, в котором конструирование std::shared_ptr из свежесозданного сырого указателя может приводить к утечке памяти: process(std::shared_ptr<Bar>(new…

    Читать далее »
  • ХабрахабрФото Сколько кода на C++ нужно написать для разбора HTTP-заголовка Authorization с помощью easy_parser из RESTinio?

    Сколько кода на C++ нужно написать для разбора HTTP-заголовка Authorization с помощью easy_parser из RESTinio?

    Мы продолжаем развивать бесплатный и открытый встраиваемый в С++ приложения HTTP-сервер RESTinio. В реализации RESTinio активно используются C++ные шаблоны, о чем мы здесь регулярно рассказываем (недавний пример). Одной из точек приложения C++ной шаблонной магии стал easy_parser, небольшая реализация нисходящего рекурсивного парсера на базе PEG. Easy_parser был добавлен в RESTinio в прошлом году для того, чтобы упростить работу с HTTP-заголовками. Мы…

    Читать далее »
  • ХабрахабрФото Сколько кода на C++ нужно написать для разбора HTTP-заголовка Authorization с помощью easy_parser из RESTinio?

    Сколько кода на C++ нужно написать для разбора HTTP-заголовка Authorization с помощью easy_parser из RESTinio?

    Мы продолжаем развивать бесплатный и открытый встраиваемый в С++ приложения HTTP-сервер RESTinio. В реализации RESTinio активно используются C++ные шаблоны, о чем мы здесь регулярно рассказываем (недавний пример). Одной из точек приложения C++ной шаблонной магии стал easy_parser, небольшая реализация нисходящего рекурсивного парсера на базе PEG. Easy_parser был добавлен в RESTinio в прошлом году для того, чтобы упростить работу с HTTP-заголовками. Мы…

    Читать далее »
  • ХабрахабрФото Jinja2 в мире C++, часть третья. «Теперь ты в конане»

    Jinja2 в мире C++, часть третья. «Теперь ты в конане»

    С момента публикации предыдущей части прошло больше полутора лет, была реализована большая куча фичей, сделано несколько релизов, но не об этом пойдёт речь. Пару дней назад в жизни библиотеки произошло важное событие: она была добавлена в основной репозиторий conan'а (conan-center-index). Об том, как это случилось, что для этого пришлось сделать и что вообще нужно делать, чтобы добавить туда свою библиотеку,…

    Читать далее »
  • ХабрахабрФото Сказ об опасном std::enable_shared_from_this, или антипаттерн «Зомби» — разбор полётов

    Сказ об опасном std::enable_shared_from_this, или антипаттерн «Зомби» — разбор полётов

    В настоящей статье приводится разбор вариантов устранения антипаттерна «Зомби», описанного в первой части: Сказ об опасном std::enable_shared_from_this, или антипаттерн «Зомби». Введение Весь код, приведённый в статье, опубликован на гитхабе в ветках. В коде использованы несколько новшеств C++17 — weak_from_this(), if statement with init-statement, может что-то ещё по мелочи. Уничтожение вышестоящей бизнес-логикой всех сильных ссылок на экземпляр класса не приводит к…

    Читать далее »
  • ХабрахабрФото Сказ об опасном std::enable_shared_from_this, или антипаттерн «Зомби»

    Сказ об опасном std::enable_shared_from_this, или антипаттерн «Зомби»

    В статье приводится опасный антипаттерн «Зомби», в некоторых ситуациях естественным образом возникающий при использовании std::enable_shared_from_this. Материал — где-то на стыке техники современного C++ и архитектуры. Введение C++11 предоставил разработчику замечательные инструменты для работы с памятью — умные указатели std::unique_ptr и связку std::shared_ptr + std::weak_ptr. Использование умных указателей по удобству и безопасности существенно перевешивает использование сырых указателей. Умные указатели широко применяются…

    Читать далее »
  • ХабрахабрФото RESTinio — это асинхронный HTTP-сервер. Простой пример из практики: отдача большого объема данных в ответ

    RESTinio — это асинхронный HTTP-сервер. Простой пример из практики: отдача большого объема данных в ответ

    Например, подключаясь к одному URL приложение должно было ограничить себя, скажем, 200KiB/sec. Недавно мне довелось поработать над приложением, которое должно было контролировать скорость своих исходящих подключений. А подключаясь к другому URL — всего 30KiB/sec. Мне потребовался HTTP-сервер, который бы отдавал трафик с какой-то заданной скоростью, например, 512KiB/sec. Самым интересным моментом здесь оказалось тестирование этих самых ограничений. Тогда бы я мог…

    Читать далее »
  • ХабрахабрФото Техника избежания неопределённого поведения при обращении к синглтону

    Техника избежания неопределённого поведения при обращении к синглтону

    В статье рассмотрены причины возникновения и способы избежания неопределённого поведения при обращении к синглтону в современном c++. Приведены примеры однопоточного кода. Ничего compiler-specific, всё в соответствии со стандартом. Введение Для начала рекомендую ознакомиться с другими статьями о синглтонах на Хабре:Три возраста паттерна SingletonСинглтоны и общие экземпляры3 cпособа нарушить Single Responsibility PrincipleSingleton — паттерн или антипаттерн?Использование паттерна синглтон… и наконец статья,…

    Читать далее »
  • ХабрахабрФото [Перевод] Лямбды: от C++11 до C++20. Часть 2

    [Перевод] Лямбды: от C++11 до C++20. Часть 2

    Привет, хабровчане. В связи со стартом набора в новую группу по курсу «Разработчик C++», делимся с вами переводом второй части статьи «Лямбды: от C++11 до C++20». Первую часть можно прочитать тут. В этой статье я описал побуждения, стоящие за этой мощной фичей C++, базовое использование, синтаксис и улучшения в каждом из языковых стандартов. В первой части серии мы рассмотрели лямбды…

    Читать далее »
  • ХабрахабрФото [Из песочницы] Аппаратный bit banding CortexM3/M4(ARM), архитектура ядра, ассемблер, С/C++14 и капля мета программирования

    [Из песочницы] Аппаратный bit banding CortexM3/M4(ARM), архитектура ядра, ассемблер, С/C++14 и капля мета программирования

    Введение Внимание, это не очередная «Hello world»статья о том как помигать светодиодом или попасть в свое первое прерывание на STM32. Однако, я постарался дать исчерпывающие объяснения по всем затрагиваемым вопросам, поэтому статья будет полезна не только многим профессиональным и мечтающим стать таковыми разработчикам (как я надеюсь), но и начинающим программистам микроконтроллеров, так как тема эта почему-то обходится стороной на бесчисленных…

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


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