Наверняка вы знакомы с таким литературным приемом, как "роман в романе". Но это встречается не только в литературе, но и в программировании. Шаблоны в C++ — это, по сути, целый язык в языке (к тому же язык Тьюринг-полный), который достоин отдельных книг, и не просто книг — а шедевров. И это при том, что метапрограммирование — всего лишь одна из многих возможностей, предоставляемых программисту современными шаблонами C++. Одним из таких шедевров можно смело считать книгу, которую вы держите в руках. Несмотря на то что в заглавии скромно указано — "второе издание", это совершенно новая книга, отражающая тот факт, что за прошедшие со времени первого издания 15 лет произошло очень много изменений, и в первую очередь это кардинальные изменения самого языка C++, который стал еще более мощным орудием в руках программиста, позволяющим создавать существенно более производительные программы. Принятые со времени первого издания стандарты C++11, C++14 и C++17 не обошли стороной и шаблоны, сделав их еще более выразительным средством программирования, позволяющем создавать еще более эффективные (и эффектные с точки зрения эстетики программирования) программы. По сути, почти вся стандартная библиотека C++ построена на применении шаблонов. Авторы книги (которые не нуждаются в представлении) — Дэвид Вандевурд, Николаи Джосаттис и Дуглас Грегор — не зря потратили столько лет на работу над книгой.
Это книга, описывающая работу с шаблонами C++ от азов до самых "темных закутков", в которые вряд ли придется заглядывать при повседневной работе даже самым искушенным программистам, которая будет одинаково полезна как программисту, желающему повысить свой начальный уровень умений и понимания шаблонов, так и профессиональному разработчику сложнейших шаблонных библиотек. Основы работы с шаблонами, шаблоны с параметрами, не являющимися типами, вариативные шаблоны, вопросы передачи аргументов в шаблоны, метапрограммирование, специализация и перегрузка, вывод аргументов, полиморфизм и наследование шаблонов, шаблоны выражений и даже возможности работы с шаблонами, которые должны появиться в следующем после C++17 стандарте языка — вряд ли найдется такая связанная с шаблонами тема, о которой можно было бы сказать, что она слабо освещена в этой книге. Книга рекомендуется в первую очередь для профессиональных программистов в качестве справочного пособия, но она будет полезна программистам на C++ любого уровня — каждый найдет в ней важный и нужный материал для себя. Книга предполагает знание читателем современного языка программирования C++. Шаблоны представляют собой одну из наиболее сильных сторон C++, но они все еще остаются недостаточно используемыми, а зачастую и неверно понимаемыми, несмотря на постоянно растущий уровень как языка C++, так и сообщества программистов на этом языке.
Author(s): Вандевурд Дэвид, Джосаттис Николаи, Грегор Дуглас
Edition: 2-е издание
Publisher: Вильямс
Year: 2018
Language: Russian
Pages: 848
City: М.
Содержание
Предисловие
Часть 1. Основы
Глава 1. Шаблоны функций
Глава 2. Шаблоны классов
Глава 3. Нетиповые параметры шаблонов
Глава 4. Вариативные шаблоны
Глава 5. Основы работы с шаблонами
Глава 6. Семантика перемещения и enable_if<>
Глава 7. По значению или по ссылке?
Глава 8. Проrраммирование времени компиляции
Глава 9. Применение шаблонов на практике
Глава 10. Основные термины в области шаблонов
Глава 11. Обобщенные библиотеки
Часть II. Уrлубленное изучение шаблонов
Глава 12. Вrлубь шаблонов
Глава 13. Имена в шаблонах
Глава 14. Инстанцирование
Глава 15. Вывод арrументов шаблона
Глава 16. Специализация и переrрузка
Глава 17. Дальнейшее развитие
Часть III. Шаблоны и проектирование
Глава 18. Полиморфная мощь шаблонов
Глава 19. Реализация свойств типов
Глава 20. Переrрузка свойств типов
Глава 21. Шаблоны и наследование
Глава 22. Статический и динамический полиморфизм
Глава 23. Метапроrраммирование
Глава 24. Списки типов
Глава 25. Кортежи
Глава 26. Контролируемые объединения
Глава 27. Шаблоны выражений
Глава 28. Отладка шаблонов
Приложение А. Правило одноrо определения
Приложение Б. Катеrории значений
Приложение В. Разрешение переrрузки
Приложение Г. Стандартные утилиты для работы с типами
Приложение Д. Концепты
Библиоrрафия
Глоссарий
Предметный указатель