Полезные материалы по всему, что может быть полезно плюсовику/сишнику.
Разгоняем C++ с кастомными аллокаторами
Сегодня мы обратим свой взор на производительность в C++, и как ни странно, нашими главными героями станут не библиотеки или сложные алгоритмы, а казалось бы, простые аллокаторы. Но не просто аллокаторы, а кастомные, которые могут заметно ускорить работу приложений.
Создание базового кастомного аллокатора
В основном кастомные аллокаторы реализуются через определение шаблона класса с методами allocate и deallocate, а также с функциями construct и destroy.
Пример простого аллокатора:
template<typename T>
class SimpleAllocator {
public:
using value_type = T;
SimpleAllocator() noexcept = default;
template<typename U> constexpr SimpleAllocator(const SimpleAllocator<U>&) noexcept {}
T* allocate(std::size_t n) {
if (n > std::numeric_limits<std::size_t>::max() / sizeof(T))
throw std::bad_alloc();
if (auto p = static_cast<T*>(std::malloc(n * sizeof(T)))) {
return p;
}
throw std::bad_alloc();
}
void deallocate(T* p, std::size_t) noexcept {
std::free(p);
}
template<typename U, typename... Args>
void construct(U* p, Args&&... args) {
new(p) U(std::forward<Args>(args)...);
}
template<typename U>
void destroy(U* p) noexcept {
p->~U();
}
};
Что можно знать о C++ в 16 лет?
Сегодня мы собеседуем Богдана и проверяем его познания в C++
Проверим, насколько рано можно программировать.
Приятного просмотра!
источник
#cpp #programming
👉 @cpp_lib
Zork
Zork++ появился из необходимости создавать проекты на C++ с использованием модуля, введенного в стандарте C++20.
Существующие системы сборки имеют ограничения и сложности в использовании модулей C++20 на постоянной основе. Поэтому мы начали разрабатывать инструмент, который берет некоторые файлы C++, генерирует необходимые команды для компилятора и вызывает компилятор для создания требуемого исполняемого файла или библиотеки!
https://github.com/zerodaycode/Zork
#cpp #programming
👉 @cpp_lib
https://github.com/zerodaycode/Zork
❓Хотите стать востребованным разработчиком на С++?
Пора понять процесс компиляции и научиться быстро решать проблемы при сборке программ
🗓 Ждем вас на открытом вебинаре 17 сентября в 20:00 мск, где мы разберем:
- из каких этапов состоит компиляция программы на С++;
- как анализировать результаты выполнения каждого этапа;
- какие проблемы могут возникнуть и как их решать.
Встречаемся в преддверии старта курса «Специализация C++ Developer».
Все участники вебинара получат специальную цену на обучение!
👉 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cAHk08
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Дорогая, я уменьшил {fmt}: уменьшил размер до 14kB и избавился от рантайма C++
Библиотека форматирования {fmt} известна своим небольшим влиянием на размер бинарников. Чаще всего её код в несколько раз меньше по сравнению с такими библиотеками, как IOStreams, Boost Format или, что иронично, tinyformat.
Давайте разберем, как можно уменьшить размер бинарников еще больше!
https://habr.com/ru/companies/beget/articles/842566/
original https://vitaut.net/posts/2024/binary-size/
#cpp #programming
👉 @cpp_lib
Что значит инициализировать int в C++?
Недавно я получил по почте от Сэма Джонсона этот вопрос. Вот слегка отредактированное письмо Сэма:
«Возьмём для примера этот код в локальной области видимости функции:
int a;
a = 5;
Подборка Telegram каналов для программистов
Системное администрирование 📌
/channel/devops_star DevOps Star (Звезда Девопса)
/channel/i_linux Системный администратор
/channel/linuxchmod Linux
/channel/sys_adminos Системный Администратор
/channel/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
/channel/sysadminof Книги для админов, полезные материалы
/channel/i_odmin Все для системного администратора
/channel/i_odmin_book Библиотека Системного Администратора
/channel/i_odmin_chat Чат системных администраторов
/channel/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
/channel/sysadminoff Новости Линукс Linux
1C разработка 📌
/channel/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
/channel/cpp_lib Библиотека C/C++ разработчика
/channel/cpp_knigi Книги для программистов C/C++
/channel/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
/channel/pythonofff Python академия. Учи Python быстро и легко🐍
/channel/BookPython Библиотека Python разработчика
/channel/python_real Python подборки на русском и английском
/channel/python_360 Книги по Python Rus
Java разработка 📌
/channel/BookJava Библиотека Java разработчика
/channel/java_360 Книги по Java Rus
/channel/java_geek Учим Java на примерах
GitHub Сообщество 📌
/channel/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
/channel/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
/channel/developer_mobila Мобильная разработка
/channel/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
/channel/frontend_1 Подборки для frontend разработчиков
/channel/frontend_sovet Frontend советы, примеры и практика!
/channel/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
/channel/game_devv Все о разработке игр
Библиотеки 📌
/channel/book_for_dev Книги для программистов Rus
/channel/programmist_of Книги по программированию
/channel/proglb Библиотека программиста
/channel/bfbook Книги для программистов
/channel/books_reserv Книги для программистов
БигДата, машинное обучение 📌
/channel/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
/channel/bookflow Лекции, видеоуроки, доклады с IT конференций
/channel/coddy_academy Полезные советы по программированию
/channel/rust_lib Полезный контент по программированию на Rust
/channel/golang_lib Библиотека Go (Golang) разработчика
/channel/itmozg Программисты, дизайнеры, новости из мира IT
/channel/php_lib Библиотека PHP программиста 👨🏼💻👩💻
/channel/nodejs_lib Подборки по Node js и все что с ним связано
/channel/ruby_lib Библиотека Ruby программиста
QA, тестирование 📌
/channel/testlab_qa Библиотека тестировщика
Шутки программистов 📌
/channel/itumor Шутки программистов
Защита, взлом, безопасность 📌
/channel/thehaking Канал о кибербезопасности
/channel/xakep_1 Статьи из "Хакера"
Книги, статьи для дизайнеров 📌
/channel/ux_web Статьи, книги для дизайнеров
Английский 📌
/channel/UchuEnglish Английский с нуля
Математика 📌
/channel/Pomatematike Канал по математике
/channel/phis_mat Обучающие видео, книги по Физике и Математике
Excel лайфхак📌
/channel/Excel_lifehack
/channel/tikon_1 Новости высоких технологий, науки и техники💡
/channel/mir_teh Мир технологий (Technology World)
Вакансии 📌
/channel/sysadmin_rabota Системный Администратор
/channel/progjob Вакансии в IT
Strlcpy, или как CPU противоречат здравому смыслу
Один из моих старых постов о strlcpy недавно вызвал обсуждения на различных форумах. Вероятно, с этим как-то связан выпуск новой версии POSIX. Многие авторы приводили один контраргумент, который я слышал и раньше:
В общем случае, когда исходная строка умещается в конечный буфер, strlcpy будет обходить строку только один раз, а strlen + memcpy будут обходить её дважды.
Под этим аргументом скрывается допущение о том, что однократный обход строки выполняется быстрее. И, честно говоря, это вполне разумное допущение. Но справедливо ли оно? Об этом мы и поговорим в статье.
https://habr.com/ru/articles/838116/
#cpp #programming
👉 @cpp_lib
Оптимизируем до последней капли: cache-friendly код на C++
❓Хотите узнать, как «выжимать» последние проценты скорости в программе на C++?
⏰ Ждем вас на открытом вебинаре 4 сентября в 20:00 мск, где мы разберем:
- как реализовать доступ к оперативной памяти (ОП) в современных системах;
- «плохие» и «хорошие» паттерны доступа к ОП;
- как писать дружелюбный к кэшу код на C++.
Урок идеально подходит для разработчиков, которые заботятся о скорости выполнения кода и уже пишут или планируют перейти на C++.
🔥 Спикер Андрей Рыжиков — разработчик в НИИ обработки аэрокосмических изображений.
Встречаемся в преддверии старта курса «Специализация C++ Developer». Все участники вебинара получат специальную цену на обучение!
👉Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cAb7tO
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Foodtech tour Яндекса возвращается: стартуем с митапом в Москве 19 сентября!
В программе суровая энтерпрайз-разработка для опытных бэкендеров. Эксперты расскажут о работе с монолитами на примере Еды и переосмыслении процессинга заказов в Лавке. От Маркета заявлен воркшоп с архитектурными кейсами: без практики точно не останемся.
Foodtech tour охватит 4 столицы: Москва — 19 сентября, Санкт-Петербург — 17 октября, Казань — 14 ноября и Минск — 5 декабря.
👉🏻 Регистрируйтесь в своём городе!
Знакомство с constexpr unique_ptr (С++23)
https://andreasfertig.blog/2023/10/using-cpp23s-constexpr-unique_ptr/
#cpp #programming
👉 @cpp_lib
Рассказываем, как прошла C++ Zero Cost Conf - конференция по прикладному C++
На сцене выступили с докладами 14 спикеров из разных компаний, в том числе:
🔸 Антон Полухин, руководитель группы разработки общих компонент Яндекс Go. Поделился свежими новостями от Российской рабочей группы по стандартизации С++
🔸 Андрей Аксёнов, руководитель разработки инфраструктуры поиска Авито/Sphinx. Рассказал, как парсить гигабайты в секунду
🔸 Василий Куликов, ведущий разработчик в Яндексе. Рассмотрел основные проблемы реализации примитивов синхронизации во фреймворке userver
🔸 Константин Владимиров, руководитель отдела компиляторов и средств разработки в Syntacore. Рассказал об интересных C++-решениях в генераторе llvm-snippy
🔸 Вадим Белотицкий, руководитель разработки сервиса «Межгород» Яндекс Такси. Провёл квиз «Геогессинг». Зрители угадывали локации, в которых расположены сервисы Яндекса
Не обошлось без активностей за пределами основной сцены. Расставили большие доски с примерами неработающего кода, а участники пытались понять, где кроется ошибка и как её исправить. А ещё была целая зона настолок от инженеров Яндекса: на выбор «Гусиус», «IT-крокодил», «Угадай кто» и «IT’s Доббль».
📹 Все выступления спикеров собрали в плейлист. Посмотреть его можно [в VK Видео] или [на ютуб-канале].
Не знаете, как эффективно управлять конфигурацией и обеспечивать консенсус данных? Ваши проекты сталкиваются с проблемами масштабируемости и надежности?
Тогда присоединяйтесь к открытому вебинару 21 августа в 20:00 мск, где мы:
1. Рассмотрим основы и архитектуру Apache Zookeeper: алгоритмы обеспечения консенсуса данных (Zookeeper Atomic Broadcast с Paxos)
2. Узнаем, как Zookeeper обеспечивает координацию и синхронизацию в распределенных системах
3. Разберём методы настройки и администрирования Zookeeper
👨💻🛠👨🏻💻 Урок будет полезен разработчикам, DevOps-инженерам, администраторам систем и сетей, архитекторам ПО и всем, кто хочет глубже понять работу Apache Zookeeper.
🔴 Запишитесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/czyvoiРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Настоящее железо: открыта регистрация на митап о роботах Маркета!
В субботу, 7 сентября пройдёт Яндекс Robotics Day — ивент для backend, ML/CV-разработчиков и hardware-инженеров в Москве.
Железный аргумент зарегистрироваться — митап пройдёт в центре робототехники Яндекса. В программе доклады и экскурсия с демонстрацией складских роботов, а ещё афтепати и нетворкинг с экспертами.
👉🏻 Подробная программа доступна на сайте. После регистрации дождитесь подтверждения заявки. До встречи!
CodeChecker: анализируем большой проект на С++ быстро, эффективно и бесплатно
Привет, Меня зовут Давид, еще недавно я был стажером YADRO, а сейчас работаю в отделе разработки ПО поддержки сетевой аппаратной части. У нас в команде есть большой проект на более 100 000 строк, написан на C++ (и частично на С). Код переписывался много раз, а за самим проектом на правах легаси особо никто не следил: работает — не трогай. Когда я пришел в команду, у меня была задача: привести код в порядок и отловить ошибки, которые пропускает компилятор — например, возможное разыменование нулевого указателя, неинициализированные переменные или простые опечатки.
Одним из очевидных решений было использование статического анализатора. Выбрали довольно известное коммерческое решение, но долгие прогоны не привели ни к чему дельному. Решили поэкспериментировать с другими вариантами статических анализаторов, сделав ставку на open source. Поиски привели к инфраструктуре CodeCheсker, которая предоставляет удобный интерфейс запуска и настройки статических анализаторов через аргументы командной строки. С помощью инструмента удалось достичь результатов, которые значительно превысили значения, полученные на коммерческом решении.
Под катом расскажу, что же такое CodeCheсker, как с ним работать и почему его точно стоит попробовать на большом проекте.
https://habr.com/ru/companies/yadro/articles/838878/
#cpp #programming
👉 @cpp_lib
Подборка Telegram каналов для программистов
Системное администрирование 📌
/channel/devops_star DevOps Star (Звезда Девопса)
/channel/i_linux Системный администратор
/channel/linuxchmod Linux
/channel/sys_adminos Системный Администратор
/channel/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
/channel/sysadminof Книги для админов, полезные материалы
/channel/i_odmin Все для системного администратора
/channel/i_odmin_book Библиотека Системного Администратора
/channel/i_odmin_chat Чат системных администраторов
/channel/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
/channel/sysadminoff Новости Линукс Linux
1C разработка 📌
/channel/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
/channel/cpp_lib Библиотека C/C++ разработчика
/channel/cpp_knigi Книги для программистов C/C++
/channel/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
/channel/pythonofff Python академия. Учи Python быстро и легко🐍
/channel/BookPython Библиотека Python разработчика
/channel/python_real Python подборки на русском и английском
/channel/python_360 Книги по Python Rus
Java разработка 📌
/channel/BookJava Библиотека Java разработчика
/channel/java_360 Книги по Java Rus
/channel/java_geek Учим Java на примерах
GitHub Сообщество 📌
/channel/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
/channel/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
/channel/developer_mobila Мобильная разработка
/channel/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
/channel/frontend_1 Подборки для frontend разработчиков
/channel/frontend_sovet Frontend советы, примеры и практика!
/channel/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
/channel/game_devv Все о разработке игр
Библиотеки 📌
/channel/book_for_dev Книги для программистов Rus
/channel/programmist_of Книги по программированию
/channel/proglb Библиотека программиста
/channel/bfbook Книги для программистов
/channel/books_reserv Книги для программистов
БигДата, машинное обучение 📌
/channel/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
/channel/bookflow Лекции, видеоуроки, доклады с IT конференций
/channel/coddy_academy Полезные советы по программированию
/channel/rust_lib Полезный контент по программированию на Rust
/channel/golang_lib Библиотека Go (Golang) разработчика
/channel/itmozg Программисты, дизайнеры, новости из мира IT
/channel/php_lib Библиотека PHP программиста 👨🏼💻👩💻
/channel/nodejs_lib Подборки по Node js и все что с ним связано
/channel/ruby_lib Библиотека Ruby программиста
QA, тестирование 📌
/channel/testlab_qa Библиотека тестировщика
Шутки программистов 📌
/channel/itumor Шутки программистов
Защита, взлом, безопасность 📌
/channel/thehaking Канал о кибербезопасности
/channel/xakep_1 Статьи из "Хакера"
Книги, статьи для дизайнеров 📌
/channel/ux_web Статьи, книги для дизайнеров
Английский 📌
/channel/UchuEnglish Английский с нуля
Математика 📌
/channel/Pomatematike Канал по математике
/channel/phis_mat Обучающие видео, книги по Физике и Математике
Excel лайфхак📌
/channel/Excel_lifehack
/channel/tikon_1 Новости высоких технологий, науки и техники💡
/channel/mir_teh Мир технологий (Technology World)
Вакансии 📌
/channel/sysadmin_rabota Системный Администратор
/channel/progjob Вакансии в IT
📕CMake Best Practices: Discover proven techniques for creating and maintaining programming projects with CMake
Автор: Dominik Berner (2022)
Вы не только познакомитесь с основами, но и разберете реальные примеры структурирования больших и сложных сопровождаемых проектов и создания сборок, работающих в любой среде программирования. Вы поймете, как интегрировать и автоматизировать различные инструменты для повышения общего качества программного обеспечения, такие как фреймворки тестирования, фаззеры и автоматическая генерация документации. А поскольку написание кода — это только половина работы, книга также поможет вам создать инсталляторы, упаковать и распространить ваше программное обеспечение. Все это адаптировано к современным рабочим процессам разработки, в которых активно используется инфраструктура CI/CD.
#cpp #programming
👉 @cpp_lib
std::execution принят в C++26 — пора знакомиться
Единый фреймворк асинхронности и параллелизма, возможность делить вычислительные ресурсы разными кодовыми базами без сложной интеграции, простота использования и гибкость - все это то, чего в C++ никогда не было.
В конце июня стандартный комитет одобрил включение std::execution (P2300) в C++26. Это пропозал, который призван решить вышеуказанные проблемы. Давайте разбираться!
https://habr.com/ru/articles/842316/
#cpp #programming
👉 @cpp_lib
Конструкторы, деструкторы, операторы — частые практики при программировании на C++
Данная статья служит шпаргалкой при написании классов с различными перегрузками операторов на примере тривиального класса строки (и ещё нескольких). Описанное здесь позволяет избежать копирования кода из одного конструктора или оператора в другой, что значительно снижает вероятность появления ошибок, но может привести к незначительному уменьшению производительности.
https://habr.com/ru/articles/838392/
#cpp #programming
👉 @cpp_lib
erid: LjN8K1ztG
Станьте разработчиком нейро-сотрудников на Python и зарабатывайте от 150.000р в месяц 🔥🔥🔥
Мы научим вас создавать топовых нейро-сотрудников на базе GPT-4 Omni, и вы сможете:
1️⃣ Устроиться разработчиком в крупную компанию и зарабатывать от 150 тысяч ₽ в месяц
2️⃣ Разрабатывать такие проекты на заказ и зарабатывать от 500 тысяч ₽ за проект
3️⃣ Создать нейро-сотрудника в вашей компании и вырасти на +30-100% в зарплате
Что будет на интенсиве?
🧬 Теория: как создаются нейро-сотрудники с GPT-4o на Python
🧬 Практика: мы создадим нейро-консультанта, нейро-HR, нейро-маркетолога и др.
Ведущий интенсива - Senior AI разработчик нейросетей и основатель Университета искусственного интеллекта
🔥 Регистрируйтесь на бесплатный интенсив! Встречаемся в ближайший четверг!
Как построить мост между JavaScript и C++ через WASM, или гайд для самых маленьких
Всем привет. Сегодня я хочу поговорить об использовании WASM с C++ и разберу, как взаимодействовать с этим всем делом через JavaScript.
Когда я начинал изучение технологии WASM, которая является довольно интересной и обсуждаемой темой в последние несколько лет. Почти сразу я столкнулся со значительным разрывом в уровнях туториалов (материалы либо очень простые и не имеют смысла, либо для совсем продвинутого уровня) и скудной документацией.
То есть, вхождение новичков может быть затруднено, и поэтому я решил создать гайд, который рассчитан на изучение темы с нуля и до среднего уровня.
В нём я постарался заполнить те информационные дыры, с которыми столкнулся сам во время изучения. Я собрал знания и хочу передать им вам, чтобы вы могли немного быстрее влиться в данную, не самую простую, тему.
В рамках данной статьи не будет подниматься тема производительности и некоторых лучших реализаций, от читателя требуется минимальное понимание JavaScript или TypeScript, и C++ кода.
https://habr.com/ru/articles/837692/
#cpp #programming
👉 @cpp_lib
Работа с кодом на C++ в Swift
Меня зовут Иван Мясников, я CTO проекта «Виртуальный ассистент» в МТС Диджитал. Встраивание кода С++ в приложения для iOS — достаточно трудная задача. Еще сложнее собрать SDK для дальнейшей поставки в сторонние приложения, используя логику на С++ совместно со Swift. В этой статье я расскажу, как мы создавали такой SDK так, чтобы он встраивался в любое приложение без танцев с целевой архитектурой процессора.
Встраивание C++ в Swift позволяет использовать один код на разных платформах и ускорить некоторые задачи, где Swift не хватает быстродействия. У нас есть библиотека на C++ для работы с ML на Tensorflow Lite. И эту библиотеку мы хотели встроить на Android, iOS, Linux под различные платформы и архитектуры процессора без переписывания логики оттуда на Kotlin, Swift или что-нибудь еще. В этой статье я расскажу, как мы заставили код на C++ работать в iOS и какие тут есть тонкости и ограничения. Я ориентировался на читателей, у которых может не быть экспертизы в iOS или в C++, и старался не погружаться в глубокие дебри. Этот материал познакомит с решениями, к которым мы пришли экспериментально, подбирая подходящие варианты под нашу задачу.
https://habr.com/ru/companies/ru_mts/articles/838926/
#cpp #programming
👉 @cpp_lib
В крайности – Fold-выражения
Выражения сложения существуют в C++ начиная с C++17 и существенно влияют на то, как мы обращаемся с переменными шаблонами. Когда-то давно я писал о выражениях сложения в рамках серии о метапрограммировании, но сегодня мы рассмотрим крайние случаи использования выражений сложения.
Прежде чем мы начнем, сделаем важную оговорку: В этой статье примеры кода показывают использование вариативных шаблонов с аргументами, передаваемыми по значению, без их пересылки. Это сделано для того, чтобы упростить их и сосредоточиться на идее, лежащей в основе примеров.
https://cppsenioreas.wordpress.com/2023/05/22/into-the-extreme-fold-expressions/
#cpp #programming
👉 @cpp_lib
🔖Mastering 3D Game Engine Development with C++: Perfect for Beginners: All You Need is a Passion for Game Development and a Love for Coding!
Автор: Andrew M. Jones (2024)
Устали от предустановленных ограничений? Эта книга познакомит вас с возможностями C++, "выбором чемпиона" для программистов, для проектирования и создания самой основы игр вашей мечты - захватывающих трехмерных миров, захватывающих приключений и эпических сражений. Никакого предварительного опыта работы с движком не требуется! Просто привнесите в себя свою страсть к разработке игр и дух программирования.
#cpp #programming
👉 @cpp_lib
Game Engine
00.🕹️ Game Engine hardCORE серии. Promo
02.🕹️ Сборка C++ проектов. Препроцессинг.
03.🕹️ Сборка C++ проектов. Компиляция. Ассемблер. Теория.
04.🕹️ Сборка C++ проектов. Оптимизации компилятора. Inline, constexpr, alignment.
05.🕹️ Сборка C++ проектов. Linker. Forward declaration.
06.🕹️ Сборка C++ проектов. Static/dynamic libraries. PCH. Unity (JUMBO) build.
источник
#cpp #programming #ue5 #unrealengine
👉 @cpp_lib
Простая в реализации arena-friendly hash map
https://nullprogram.com/blog/2023/09/30/
#cpp #programming
👉 @cpp_lib
Дорожная карта навыков разработчика на C++
В этой статье мы с помощью карты покажем, какие навыки и знания нужны разработчику на C++. Естественно, разбирать путь развития «плюсистов» будем на собственном примере — тем более что у нас в «Лаборатории Касперского» много очень разных проектов с отличающимися задачами. Однако наша карта по большей части универсальна и будет полезна всем, кто хочет развиваться в разработке на C++.
https://habr.com/ru/specials/726724/
#cpp #programming
👉 @cpp_lib
«Range-based for»: что интересного лежит на поверхности
Новый синтаксис для циклов for в C++ появился уже давно - более десяти лет назад в стандарте C++11. Идея, скрывающаяся за этим синтаксисом, не является сколь-нибудь запутанной, и практически все, кто интересуются новыми свойствами языка, быстро разобрались с тем, как этим синтаксисом пользоваться и, что важнее, как создавать свои типы, совместимые с синтаксисом range-based for. Однако, как мне кажется, именно в вопросах взаимодействия с пользовательскими типами спецификация range-based for содержит несколько интересных деталей, лежащих практически на поверхности, которые остаются незамеченными просто потому, что идиоматические подходы прекрасно обходятся и без них. Возможно, кому-то будет интересно взглянуть на них повнимательнее.
https://habr.com/ru/articles/835130/
#cpp #programming
👉 @cpp_lib