Название: Шаблоны C++. Справочник разработчика, 2-е издание Автор: Вандевурд Д., Джосаттис Н. Издательство: Вильямс ISBN: 978-5-9500296-8-4 Год: 2018 Страниц: 848 Язык: русский Формат: pdf +code Размер: 32.9 MB
Наверняка вы знакомы с таким литературным приемом, как "роман в романе". Но это встречается не только в литературе, но и в программировании. Шаблоны в C++ — это, по сути, целый язык в языке (к тому же язык Тьюринг-полный), который достоин отдельных книг, и не просто книг — а шедевров. И это при том, что метапрограммирование — всего лишь одна из многих возможностей, предоставляемых программисту современными шаблонами C++. Одним из таких шедевров можно смело считать книгу, которую вы держите в руках. Несмотря на то что в заглавии скромно указано — "второе издание", это совершенно новая книга, отражающая тот факт, что за прошедшие со времени первого издания 15 лет произошло очень много изменений, и в первую очередь это кардинальные изменения самого языка C++, который стал еще более мощным орудием в руках программиста, позволяющим создавать существенно более производительные программы. Принятые со времени первого издания стандарты C++11, C++14 и C++17 не обошли стороной и шаблоны, сделав их еще более выразительным средством программирования, позволяющем создавать еще более эффективные (и эффектные с точки зрения эстетики программирования) программы. По сути, почти вся стандартная библиотека C++ построена на применении шаблонов. Авторы книги (которые не нуждаются в представлении) — Дэвид Вандевурд, Николаи Джосаттис и Дуглас Грегор — не зря потратили столько лет на работу над книгой.
Это книга, описывающая работу с шаблонами C++ от азов до самых "темных закутков", в которые вряд ли придется заглядывать при повседневной работе даже самым искушенным программистам, которая будет одинаково полезна как программисту, желающему повысить свой начальный уровень умений и понимания шаблонов, так и профессиональному разработчику сложнейших шаблонных библиотек. Основы работы с шаблонами, шаблоны с параметрами, не являющимися типами, вариативные шаблоны, вопросы передачи аргументов в шаблоны, метапрограммирование, специализация и перегрузка, вывод аргументов, полиморфизм и наследование шаблонов, шаблоны выражений и даже возможности работы с шаблонами, которые должны появиться в следующем после C++17 стандарте языка — вряд ли найдется такая связанная с шаблонами тема, о которой можно было бы сказать, что она слабо освещена в этой книге. Книга рекомендуется в первую очередь для профессиональных программистов в качестве справочного пособия, но она будет полезна программистам на C++ любого уровня — каждый найдет в ней важный и нужный материал для себя. Книга предполагает знание читателем современного языка программирования C++. Шаблоны представляют собой одну из наиболее сильных сторон C++, но они все еще остаются недостаточно используемыми, а зачастую и неверно понимаемыми, несмотря на постоянно растущий уровень как языка C++, так и сообщества программистов на этом языке.
Предисловие 22 О книге 27 Часть I. Основы 35 Глава 1. Шаблоны функций 37 Глава 2. Шаблоны классов 57 Глава 3. Нетиповые параметры шаблонов 79 Глава 4. Вариативные шаблоны 89 Глава 5. Основы работы с шаблонами 101 Глава 6. Семантика перемещения и enable_if<> 125 Глава 7. По значению или по ссылке? 141 Глава 8. Программирование времени компиляции 159 Глава 9. Применение шаблонов на практике 173 Глава 10. Основные термины в области шаблонов 189 Глава 11. Обобщенные библиотеки 197 Часть II. Углубленное изучение шаблонов 217 Глава 12. Вглубь шаблонов 219 Глава 13. Имена в шаблонах 261 Глава 14. Инстанцирование 293 Глава 15. Вывод аргументов шаблона 321 Глава 16. Специализация и перегрузка 379 Глава 17. Дальнейшее развитие 409 Часть III. Шаблоны и проектирование 425 Глава 18. Полиморфная мощь шаблонов 427 Глава 19. Реализация свойств типов 443 Глава 20. Перегрузка свойств типов 525 Глава 21. Шаблоны и наследование 551 Глава 22. Статический и динамический полиморфизм 581 Глава 23. Метапрограммирование 593 Глава 24. Списки типов 613 Глава 25. Кортежи 637 Глава 26. Контролируемые объединения 665 Глава 27. Шаблоны выражений 693 Глава 28. Отладка шаблонов 715 Приложение А. Правило одного определения 727 Приложение Б. Категории значений 737 Приложение В. Разрешение перегрузки 745 Приложение Г. Стандартные утилиты для работы с типами 761 Приложение Д. Концепты 803 Библиография 815 Глоссарий 821 Предметный указатель 833
Скачать Шаблоны C++. Справочник разработчика, 2-е издание