SENIORCPP Telegram 2843
Немного про метапрограммирование и эстетическое удовольствие от type_traits

Сегодня прочитал пост Вани Ходора (бэкенд-разраб из Лавки) про type traits — небольшой гайд, который наверняка вызовет ностальгию у тех, кто когда-то лепил свои std::enable_if, is_same, remove_cvref, потому что библиотека ещё была до C++14 и приходилось всё тащить на себе.

Казалось бы, type_traits — довольно скучная часть стандартной библиотеки. Но чем больше работаешь с шаблонным кодом, тем чаще ловишь себя на том, что это не просто утилиты, а строительные блоки для архитектуры. И да, некоторые из них прямо эстетически красивые.

Из любимого — std::is_invocable, std::is_detected, std::conditional_t, std::void_t. Когда видишь, как эти трейты могут элегантно разрулить перегрузку, или сделать fallback на дефолтную реализацию без лишних ифов — это как хорошо написанная лямбда: вроде ничего особенного, а работает идеально.

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

В целом, type_traits — это, по сути, DSL на минималках. Если подходить к ним не как к синтаксическому сахару, а как к способу выразить правила типов прямо в коде — открывается совсем другой уровень выразительности. Особенно если ты пишешь свои обёртки, декораторы или generic-компоненты.

👴 Помню времена, когда std::enable_if приходилось объяснять джунам с доской и маркером. Сейчас это уже почти common sense. И это хорошо — потому что без этой базы метапрограммировать тяжело.

В общем, рекомендую почитать — вдруг тоже вспомните свои любимые трейты. А если нет — повод попробовать std::is_aggregate или std::is_trivially_copyable и посмотреть, как они могут облегчить жизнь.

Кстати, а у вас в команде кто-нибудь ещё пишет свои трейты или все уже перешли на концепты?



tgoop.com/seniorcpp/2843
Create:
Last Update:

Немного про метапрограммирование и эстетическое удовольствие от type_traits

Сегодня прочитал пост Вани Ходора (бэкенд-разраб из Лавки) про type traits — небольшой гайд, который наверняка вызовет ностальгию у тех, кто когда-то лепил свои std::enable_if, is_same, remove_cvref, потому что библиотека ещё была до C++14 и приходилось всё тащить на себе.

Казалось бы, type_traits — довольно скучная часть стандартной библиотеки. Но чем больше работаешь с шаблонным кодом, тем чаще ловишь себя на том, что это не просто утилиты, а строительные блоки для архитектуры. И да, некоторые из них прямо эстетически красивые.

Из любимого — std::is_invocable, std::is_detected, std::conditional_t, std::void_t. Когда видишь, как эти трейты могут элегантно разрулить перегрузку, или сделать fallback на дефолтную реализацию без лишних ифов — это как хорошо написанная лямбда: вроде ничего особенного, а работает идеально.

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

В целом, type_traits — это, по сути, DSL на минималках. Если подходить к ним не как к синтаксическому сахару, а как к способу выразить правила типов прямо в коде — открывается совсем другой уровень выразительности. Особенно если ты пишешь свои обёртки, декораторы или generic-компоненты.

👴 Помню времена, когда std::enable_if приходилось объяснять джунам с доской и маркером. Сейчас это уже почти common sense. И это хорошо — потому что без этой базы метапрограммировать тяжело.

В общем, рекомендую почитать — вдруг тоже вспомните свои любимые трейты. А если нет — повод попробовать std::is_aggregate или std::is_trivially_copyable и посмотреть, как они могут облегчить жизнь.

Кстати, а у вас в команде кто-нибудь ещё пишет свои трейты или все уже перешли на концепты?

BY Senior C++ Developer


Share with your friend now:
tgoop.com/seniorcpp/2843

View MORE
Open in Telegram


Telegram News

Date: |

To edit your name or bio, click the Menu icon and select “Manage Channel.” In the next window, choose the type of your channel. If you want your channel to be public, you need to develop a link for it. In the screenshot below, it’s ”/catmarketing.” If your selected link is unavailable, you’ll need to suggest another option. Select “New Channel” On June 7, Perekopsky met with Brazilian President Jair Bolsonaro, an avid user of the platform. According to the firm's VP, the main subject of the meeting was "freedom of expression." Done! Now you’re the proud owner of a Telegram channel. The next step is to set up and customize your channel.
from us


Telegram Senior C++ Developer
FROM American