(увеличить обложку)
Тираж данной книги закончился.
|
Наверняка вы знакомы с таким литературным приемом, как "роман в романе". Но это встречается не только в литературе, но и в программировании. Шаблоны в C++ — это, по сути, целый язык в языке (к тому же язык Тьюринг-полный), который достоин отдельных книг, и не просто книг — а шедевров. И это при том, что метапрограммирование — всего лишь одна из многих возможностей, предоставляемых программисту современными шаблонами C++. Одним из таких шедевров можно смело считать книгу, которую вы держите в руках. Несмотря на то что в заглавии скромно указано — "второе издание", это совершенно новая книга, отражающая тот факт, что за прошедшие со времени первого издания 15 лет произошло очень много изменений, и в первую очередь это кардинальные изменения самого языка C++, который стал еще более мощным орудием в руках программиста, позволяющим создавать существенно более производительные программы. Принятые со времени первого издания стандарты C++11, C++14 и C++17 не обошли стороной и шаблоны, сделав их еще более выразительным средством программирования, позволяющем создавать еще более эффективные (и эффектные с точки зрения эстетики программирования) программы. По сути, почти вся стандартная библиотека C++ построена на применении шаблонов. Авторы книги (которые не нуждаются в представлении) — Дэвид Вандевурд, Николаи Джосаттис и Дуглас Грегор — не зря потратили столько лет на работу над книгой. Это книга, описывающая работу с шаблонами C++ от азов до самых "темных закутков", в которые вряд ли придется заглядывать при повседневной работе даже самым искушенным программистам, которая будет одинаково полезна как программисту, желающему повысить свой начальный уровень умений и понимания шаблонов, так и профессиональному разработчику сложнейших шаблонных библиотек. Основы работы с шаблонами, шаблоны с параметрами, не являющимися типами, вариативные шаблоны, вопросы передачи аргументов в шаблоны, метапрограммирование, специализация и перегрузка, вывод аргументов, полиморфизм и наследование шаблонов, шаблоны выражений и даже возможности работы с шаблонами, которые должны появиться в следующем после C++17 стандарте языка — вряд ли найдется такая связанная с шаблонами тема, о которой можно было бы сказать, что она слабо освещена в этой книге. Книга рекомендуется в первую очередь для профессиональных программистов в качестве справочного пособия, но она будет полезна программистам на C++ любого уровня — каждый найдет в ней важный и нужный материал для себя. Книга предполагает знание читателем современного языка программирования C++. Шаблоны представляют собой одну из наиболее сильных сторон C++, но они все еще остаются недостаточно используемыми, а зачастую и неверно понимаемыми, несмотря на постоянно растущий уровень как языка C++, так и сообщества программистов на этом языке. Во втором издании книги три автора, являющиеся экспертами в данной области, показывают, зачем, когда и как использовать современные шаблоны, чтобы создавать программное обеспечение, более понятное, быстрое, эффективное и легко поддерживаемое. Данное издание описывает новые возможности стандартов C++11, C++14 и C++17 и демонстрирует последние достижения в области шаблонов C++ для создания широкого спектра приложений. Авторы подробно объясняют все новые возможности языка, которые улучшают шаблоны или взаимодействие с ними, рассматривая такие темы, как вариативные шаблоны, обобщенные лямбда-выражения, вывод аргументов шаблонов классов, конструкцию if времени компиляции, передаваемые ссылки и пользовательские литералы. Они также глубоко вникают в фундаментальные концепции языка (такие как категории значений) и полностью охватывают стандартные свойства типов. Книга начинается с основательного учебника, описывающего основные концепции и связанные с ними возможности языка программирования. Остальная часть книги служит всеобъемлющим справочником, уделяющим внимание как подробностям языка, так и методам кодирования, продвинутым технологиям и сложным идиомам программирования шаблонов C++. Множество примеров исходных текстов иллюстрируют абстрактные концепции и наилучшие практические подходы для получения от шаблонов C++ максимальной пользы. ++ Точное понимание поведений шаблонов, позволяющее избежать распространенных ловушек ++ Повторное использование кода без потерь производительности и безопасности ++ Применение шаблонов для разработки более эффективного, гибкого и сопровождаемого программного обеспечения ++ Преимущества использования утилит стандартной библиотеки C++ для обобщенного программирования ++ Изучение наиболее эффективных современных идиом и методов программирования ++ Предварительное знакомство с возможностями концептов в шаблонном программировании Файлы примеров кода и обновления находятся на веб-сайте книги tmplbook.com. Дэвид Вандевурд — вице-президент Edison Design Group, Inc., автор ключевых возможностей компилятора C++ этой компании. Будучи соучредителем известного форума comp.lang.c++.moderated, он также играет активную роль в стандартизации языка C++. Вандевурд имеет ученые степени в области компьютерных наук в Политехническом институте Ренсселаера и Свободном университете Брюсселя. Он занимается разработкой алгоритмов и преподаванием. Николаи Джосаттис — независимый системный архитектор, технический менеджер, консультант и преподаватель, более 20 лет активно участвующий в стандартизации C++. В рабочей группе, занимающейся стандартизацией библиотеки, он всегда заботится об интересах обычных прикладных программистов. Джосаттис хорошо известен в сообществе программистов C++, в частности как автор книги Стандартная библиотека C++ (пер. с англ, ИД "Вильямс", 2014 г.) и других тематических руководств. Дуглас Грегор — старший разработчик компилятора, работающий в области проектирования библиотек C++. Будучи одним из первых участников проекта Boost, он разработал несколько библиотек, которые позже стали частью стандарта C++. Кроме того, Грегор привел реализацию компилятора C++ с открытым исходным кодом Clang в соответствие со стандартом C++11 и был активным участником процесса стандартизации C++11. Он имеет ученую степень в области компьютерных наук Политехнического института Ренсселаера. Книга обсуждается в отдельном сообщении в блоге Виктора Штонда. |
Разделы каталога:
Предисловие 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
|
Copyright © 1992-2020 Издательская группа "Диалектика-Вильямс"
|