Вы знакомы с шаблонами? Вам тоже комфортно с ними? Знаете ли вы, как использовать их идиоматично, компилируя в соответствии с современным стандартом?

Если вы ответили отрицательно хотя бы на один из этих вопросов, Метапрограммирование шаблонов с помощью C++ по Мариус Банкила это книга, которую вы должны прочитать следующей!

Со мной связался Packt, чтобы узнать, могу ли я порекомендовать эту книгу. Как я несколько раз объяснял в своем блоге, я не пишу отрицательных отзывов о книгах. Автор всегда усердно работает над книгой, и я не вижу смысла ругать их и их продукты. Таким образом, тот факт, что я получаю книгу бесплатно, не приводит к автоматической (положительной) рецензии. Иногда я просто делюсь своим мнением в частном порядке.

Но эта книга от Мариуса Банкилы стоит всех положительных отзывов.

Так чем же хороша эта книга?

Во-первых, он имеет четкую структуру и строится от простого к сложному. Он начинается с основ шаблонов, не забывая при этом о терминологии, истории и о том, почему вы вообще будете использовать шаблоны. Подробно рассказывается о различных типах конкретизации, специализации. Даже если вы знакомы с шаблонами, я думаю, это поможет вам прояснить некоторые моменты. Эта книга помогла мне понять то, чего я не понимал раньше. В частности, вариативные шаблоны, пакеты параметров и выражения сгиба.

Затем, во второй части, он переходит к расширенным концепциям шаблонов. В нем подробно описано, как разрешение перегрузки работает с шаблонами, как использовать переадресацию/универсальные ссылки, что такое СТАДи как использовать decltype а также std::declval.

Еще во второй части обсуждаются черты типов и дается четкое объяснение SFINAE — наконец-то кто-то! Как только вы поймете эту страшную технику, вы сможете узнать, как ее можно заменить constexpr, если или с понятиями. Но в нем упоминаются не только концепции, поскольку они являются завершением шаблонов, о которых мечтал Бьерн Страуструп с тех пор, как шаблоны были представлены, они идеально подходят для книги. Автор посвятил целую главу обсуждению концепций и ограничений. Она довольно тщательная, и эта глава почти такая же длинная, как и моя книга, посвященная концепциям.

В третьей и заключительной части, Мариус Банкила подробно описывает несколько шаблонов проектирования и реализации, использующих шаблоны. Любопытно повторяющийся шаблон шаблона, примеси и стирание типов хорошо объясняются множеством примеров кода. Книга также дает хорошее введение в библиотеку диапазонов.

Вы могли заметить, что я не следую своему обычному образцу рецензий на книги, где я подробно описываю 3 пункта автора. Одна причина в том, что я уже писал о некоторых темах, а другая причина в том, что я планирую углубиться в некоторые темы, и они заслуживают отдельного поста. Я всегда буду обращаться к Метапрограммирование шаблонов с помощью C++. Это настоятельно рекомендуется прочитать, если вы хотите повысить уровень своих знаний о шаблонах!


Подключайтесь глубже

Если вам понравилась эта статья, пожалуйста