Подход к реализации постоянных параметров шаблонов через библиотеку
Этот блогпост стал продолжением моей работы с Ричардом Смитом (P2484), за которым последовала ещё одна статья по теме (P3380). И статья, и доклад основывались на блестящей идее Файсала Вали: рефлексия может предложить интересное решение задачи сериализации, ведь
На встрече в Софии все документы, касающиеся рефлексии, были включены в рабочий проект стандарта C++26, и для меня это очень воодушевляюще — видеть формулировки прямо в черновике (например, meta.reflection).
Однако моё решение по расширению поддержки постоянных параметров шаблонов в C++26 не войдёт. Как и решение проблемы non-transient constexpr allocation. Так что ограничения на типы, которые можно использовать в качестве постоянных параметров шаблонов, сохранятся ещё на один цикл.
А может… и нет?
https://brevzin.github.io/c++/2025/08/02/ctp-reflection/
#cpp #programming
Ранее эти параметры шаблонов назывались нетиповыми параметрами шаблонов (non-type template parameters). Но с момента появления C++98 у нас всегда было три вида параметров шаблонов:
- типовые параметры (type template parameters)
- нетиповые параметры (non-type template parameters)
- шаблонные параметры-шаблоны (template template parameters)
Когда категорий всего две, можно называть их «X» и «не-X» (например, статические и нестатические методы). Но когда категорий три — это уже неудобно. А в C++26 таких категорий уже пять (добавились параметры переменных шаблонов и параметры концептов), и выходит, что почти все, кроме типовых, попадают под «нетиповые» — что нелогично. Поэтому старый термин заменили на гораздо более удачный: constant template parameter (постоянный параметр шаблона).
Этот блогпост стал продолжением моей работы с Ричардом Смитом (P2484), за которым последовала ещё одна статья по теме (P3380). И статья, и доклад основывались на блестящей идее Файсала Вали: рефлексия может предложить интересное решение задачи сериализации, ведь
std::meta::info
способен представлять что угодно.На встрече в Софии все документы, касающиеся рефлексии, были включены в рабочий проект стандарта C++26, и для меня это очень воодушевляюще — видеть формулировки прямо в черновике (например, meta.reflection).
Однако моё решение по расширению поддержки постоянных параметров шаблонов в C++26 не войдёт. Как и решение проблемы non-transient constexpr allocation. Так что ограничения на типы, которые можно использовать в качестве постоянных параметров шаблонов, сохранятся ещё на один цикл.
А может… и нет?
https://brevzin.github.io/c++/2025/08/02/ctp-reflection/
#cpp #programming
❤3🔥1
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
🏎️ Сравнение производительности C++20
ComPPare — это инструмент для бенчмаркинга и валидации производительности различных реализаций функций на C++20. Он позволяет сравнивать время выполнения и проверять результаты для разных платформ, таких как CPU, OpenMP и CUDA, что упрощает портирование функций.
🚀 Основные моменты:
- Заголовочный файл, легко интегрируется в проекты.
- Поддержка любых функций, работающих на хосте.
- Подробная информация о времени выполнения и накладных расходах.
- Встроенная проверка ошибок для распространенных типов данных.
📌 GitHub: https://github.com/funglf/ComPPare
#cpp
ComPPare — это инструмент для бенчмаркинга и валидации производительности различных реализаций функций на C++20. Он позволяет сравнивать время выполнения и проверять результаты для разных платформ, таких как CPU, OpenMP и CUDA, что упрощает портирование функций.
🚀 Основные моменты:
- Заголовочный файл, легко интегрируется в проекты.
- Поддержка любых функций, работающих на хосте.
- Подробная информация о времени выполнения и накладных расходах.
- Встроенная проверка ошибок для распространенных типов данных.
📌 GitHub: https://github.com/funglf/ComPPare
#cpp
GitHub
GitHub - funglf/ComPPare: Compare performance & correctness of reference vs. optimized functions (CPU, GPU, parallel). Written…
Compare performance & correctness of reference vs. optimized functions (CPU, GPU, parallel). Written in C++20. - funglf/ComPPare
🔥3👍1
Forwarded from C++ Academy
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
⚡ 📬 Как построить лёгкую in-memory шину сообщений на .NET Channels - отличный разбор.
В статье показано, как без внешних брокеров организовать событийную архитектуру внутри приложения, используя
🔗 Читать здесь: milanjovanovic.tech/blog/lightweight-in-memory-message-bus-using-dotnet-channels
#dotnet #csharp #architecture #messaging #inmemory```
В статье показано, как без внешних брокеров организовать событийную архитектуру внутри приложения, используя
System.Threading.Channels
. Быстро, минималистично и эффективно. 🔗 Читать здесь: milanjovanovic.tech/blog/lightweight-in-memory-message-bus-using-dotnet-channels
#dotnet #csharp #architecture #messaging #inmemory```
❤1