SFINAE в C++

Привет, Хабр! Сегодня я хочу поговорить про SFINAE, загадочную аббревиатуру из C++. Расшифровывается SFINAE не менее загадочно: Substitution Failure Is Not An Error , по-русски: «неудавшаяся подстановка — не ошибка». Сейчас рассмотрим, почему это правило появилось, как оно работает и как мы можем использовать его себе во благо. К механике SFINAE

https://habr.com/ru/companies/otus/articles/971354/

#C++ #шаблонная_метапрограммирование #шаблоны #SFINAE #перегрузка_функций #типы_в_C++ #метапрограммирование #компиляция

SFINAE в C++

Привет, Хабр! Сегодня я хочу поговорить про SFINAE, загадочную аббревиатуру из C++ . Расшифровывается SFINAE не менее загадочно: Substitution Failure Is Not An Error , по-русски: «неудавшаяся...

Хабр

Что не так в Расте :: впечатления вкатуна

Сначала этот текст задумывался, как комментарий к моему предыдущему тексту , в котором я рассказал, как за день на расте мне удалось написать новую, неспецифицированную, глючную и медленную реализацию половины OTP . Но пока я тот комментарий писал, внезапно оказалось, что, несмотря на общее положительное впечатление от раста, претензий к нему у меня набралось на целый текст. Ну что ж, заточите свои минусаторы, ниже — неполный и предвзятый список претензий

https://habr.com/ru/articles/973938/

#макросы #метапрограммирование #документация #комментарии_в_коде #тестирование

Что не так в Расте :: впечатления вкатуна

Сначала этот текст задумывался, как комментарий к моему предыдущему тексту , в котором я рассказал, как за день на расте мне удалось написать новую, неспецифицированную, глючную и медленную реализацию...

Хабр

Продвинутое использование препроцессора C/C++

Зачастую, в проектах ограничивается использование препроцессора по следующим причинам: — Он не похож на весь остальной язык; — Макросы могут возвращать неполные синтаксические конструкции, или вовсе различные, в зависимости от параметров. Ввиду перечисленных особенностей, читать код с активным использованием препроцессора зачастую становится на порядок сложнее кода без него. Со всеми его недостатками, инструмент есть в языке и достоин изучения.

https://habr.com/ru/companies/timeweb/articles/928598/

#препроцессор #c_language #макросы #метапрограммирование #c++ #C #ненормальное_программирование #функциональное_программирование #timeweb_статьи

Продвинутое использование препроцессора C/C++

Зачастую, в проектах ограничивается использование препроцессора по следующим причинам: Он не похож на весь остальной язык Макросы могут возвращать неполные синтаксические конструкции, или вовсе...

Хабр

Метапрограммирование 2.0: макросы и генерация кода в современном мире

Забудьте про скучные «Hello, World». Макросы и шаблоны давно стали полноценными инструментами архитектора кода: от хитрых C++-шаблонов до процедурных макросов Rust и Java-аннотаций, автоматически генерирующих целые фреймворки. В этой статье мы рассмотрим примеры, где metaprogramming избавляет от рутины и экономит часы работы над проектом. Детали как всегда под катом.

https://habr.com/ru/companies/ruvds/articles/916552/

#ruvds_статьи #метапрограммирование #генерация_кода #макросы #code_generation #Rust #Java #C++ #metaprogramming #шаблонный_код

Метапрограммирование 2.0: макросы и генерация кода в современном мире

Забудьте про скучные «Hello, World». Макросы и шаблоны давно стали полноценными инструментами архитектора кода: от хитрых C++-шаблонов до процедурных макросов Rust и Java-аннотаций, автоматически...

Хабр

Метапрограммирование 2.0: макросы и генерация кода в современном мире

Забудьте про скучные «Hello, World». Макросы и шаблоны давно стали полноценными инструментами архитектора кода: от хитрых C++-шаблонов до процедурных макросов Rust и Java-аннотаций, автоматически генерирующих целые фреймворки. В этой статье мы рассмотрим примеры, где metaprogramming избавляет от рутины и экономит часы работы над проектом. Детали как всегда под катом.

https://habr.com/ru/companies/ruvds/articles/916552/

#ruvds_статьи #метапрограммирование #генерация_кода #макросы #code_generation #Rust #Java #C++ #metaprogramming #шаблонный_код

Метапрограммирование 2.0: макросы и генерация кода в современном мире

Забудьте про скучные «Hello, World». Макросы и шаблоны давно стали полноценными инструментами архитектора кода: от хитрых C++-шаблонов до процедурных макросов Rust и Java-аннотаций, автоматически...

Хабр

Полиморфизм, мета-программирование и космическая баллистика: 4 доклада о C++ и Linux Kernel

Посмотрели за вас все доклады с System Level Meetup и выбрали по два лучших из потоков по Linux Kernel и C++. Для «плюсовиков» приготовили выступления о мета-программировании и девиртуализации в компиляторах. Для тех, кто интересуется ядром Linux — материалы о kernel bypass и чем-то еще. Остальные доклады и дискусии собрали в плейлисты, ссылки ищите под катом.

https://habr.com/ru/companies/yadro/articles/916286/

#c++ #linux_kernel #доклады #митапы #метапрограммирование

Полиморфизм, мета-программирование и космическая баллистика: 4 доклада о C++ и Linux Kernel

Посмотрели за вас все доклады System Level Meetup от YADRO и выбрали по два лучших из потоков по Linux Kernel и C++. Для «плюсовиков» приготовили выступления о мета-программировании и девиртуализации...

Хабр

Type-level программирование в TypeScript: практические кейсы и новые возможности

Как использовать мощь системы типов TypeScript для вычисления логики ещё на этапе компиляции и автоматической генерации кода. Разбираем условные типы, шаблонные литералы, рекурсивные типы и другие приёмы, чтобы упростить разработку, сократить дублирование кода и снизить вероятность ошибок на runtime.

https://habr.com/ru/articles/871336/

#typescript #Typelevel_программирование #метапрограммирование #условные_типы #типобезопасность #Валидация_типов #рекурсивные_типы #mapped_types #Шаблонные_литералы_типов

Type-level программирование в TypeScript: практические кейсы и новые возможности

Изображение, созданное DALL-E Type-level программирование в контексте TypeScript - это набор приемов и паттернов, позволяющих решать задачи уже на этапе компиляции, опираясь на возможности системы...

Хабр

Type Loopholes: решая нерешаемое. Рефлексия времени компиляции

Лупхолы — это техника, позволяющая манипулировать глобальным состоянием компилятора, добавляя значения и считывая их. Эта техника позволяет решать многие задачи, некоторые из которых будут рассмотрены в статье: Узнать, какие параметры принимает конструктор типа. Узнать, с какими шаблонными параметрами вызывался метод/функция с ADL. Как сделать метапрограммирование с типами более похожим на обычный код, где есть состояние.

https://habr.com/ru/articles/824574/

#лупхолы #метапрограммирование #рефлексия #c++ #constexpr

Type Loopholes: решая нерешаемое. Рефлексия времени компиляции

Лупхолы — это техника, позволяющая манипулировать глобальным состоянием компилятора, добавляя значения и считывая их. Эта техника позволяет решать многие задачи, некоторые из которых будут рассмотрены...

Хабр

Новая жизнь или начало экзистенциального кризиса?

Ни для кого не секрет, что популярные языки программирования развиваются по схожему сценарию. Сначала появляется новый язык программирования с амбициозной и благой целью решить те или иные проблемы уже существующего языка, которые иначе, как созданием нового языка программирования, не решить. Далее язык набирает популярность, часто путем обрастания различными модными фичами. Теряет связь с миром свою простоту и лаконичность в бесконечной погоне за новыми возможностями. В какой-то момент наступает экзистенциальный кризис в виде Франкенштейна. А как отмыть кровь решать подобные проблемы, мы уже знаем. Или я несколько утрирую (или нет?), и, возможно, не все так плохо? Сегодня поговорим об этом в общем и о новом функционале языка Dart в частности.

https://habr.com/ru/articles/815527/

#dart #macro #macros #metaprogramming #codegeneration #flutter #метапрограммирование #макросы #build_runner

Новая жизнь или начало экзистенциального кризиса?

Ни для кого не секрет, что популярные языки программирования развиваются по схожему сценарию. Сначала появляется новый язык программирования с амбициозной и благой целью решить те или иные проблемы...

Хабр

[Перевод] Анонс Dart 3.4

Dart 3.4 вышел сегодня! Этот релиз демонстрирует совместные усилия Dart и Flutter в посте Flutter 3.22 / Dart 3.4 / IO24 , так что обязательно ознакомьтесь с полной информацией там. В этом посте мы расскажем о поддержке WebAssembly, а затем подробно остановимся на одном из основных пунктов дорожной карты для языка Dart на этот год: макросы. Автор: Michael Thomsen Ура, анонс!

https://habr.com/ru/articles/814411/

#dartlang #dart #flutter #wasm #webassembly #metaprogramming #метапрограммирование #флаттер #дарт #анонс

Анонс Dart 3.4

Анонс Dart 3.4 Dart 3.4 вышел сегодня! Этот релиз демонстрирует совместные усилия Dart и Flutter в посте Flutter 3.22 / Dart 3.4 / IO24 , так что обязательно ознакомьтесь с полной информацией там. В...

Хабр