Описание
Первое издание этой книги было опубликовано 15 лет назад. Мы пытались написать полное руководство по шаблонам C++, надеясь на то, что оно будет полезно для практикующих программистов C++.
Этот проект оказался успешным: было чрезвычайно приятно получать отзывы читателей, которым пригодился наш материал и которые обращались к книге снова и снова, как к справочнику.
Увы, первое издание уже устарело, и хотя большая часть изложенного в нем материала полностью соответствует современным концепциям C++, нет никаких сомнений, что эволюция языка, приведшая к понятию “современного C++” — стандартам С++11, С++14 и С++17, настоятельно требует существенного пере смотра материала из первого издания.
Во втором издании наша цель “верхнего уровня” остается неизменной: создание руководства по шаблонам C++, которое было бы и надежным справочником, и доступным учебником.
Но в этот раз мы работаем с современным языком программирования C++, который представляет собой нечто значительно большее, чем язык, доступный во времена предыдущего издания. Мы также понимаем, что ресурсы, посвященные программированию на C++, со времени первого издания существенно изменились (в лучшую сторону). Появилось несколько книг, которые весьма глубоко разбираются в конкретных приложениях с использованием шаблонов.
Что еще более важно, сейчас в Интернете имеется гораздо больше информации о шаблонах C++ и методах их применения, как и примеров их использования. Так что в этом издании мы решили подчеркнуть широту методов, которые могут использоваться в различных приложениях.
Некоторые из представленных в первом издании методов устарели, потому что язык C++ теперь предлагает куда более прямые пути достижения того же результата. Эти методы убраны из книги (или низведены до небольших примечаний), и вместо них вы найдете новые методы, которые показывают текущее состояние дел при использовании новых возможностей (можно даже сказать — нового) языка.
Даже теперь, после того как мы прожили бок о бок с шаблонами C++ более 20 лет, программисты по-прежнему регулярно находят новые фундаментальные идеи, которые могут идеально вписаться в современные потребности в области развития программного обеспечения.
Цель нашей книги — поделиться этими знаниями и обеспечить читателя всей необходимой информацией для развития нового понимания основных методик программирования на C++, а возможно, и новых открытий в этой области.