Концепции шаблонов в C++ более 30 лет. Шаблоны C++ были описаны еще в 1990 году в книге The Annotated С+ + Reference Manual(ARM; см. [39]), а до этого рассматривались в ряде более специализированных публикаций. Однако даже через десять лет ощущался недостаток литературы, которая бы фокусировалась на основных концепциях и передовых методах этой увлекательной, сложной и мощной возможности C++. Первым изданием данной книги мы хотели (возможно, несколько самонадеянно) решить эту проблему.
Со времени публикации первого издания в конце 2002 года в C++ изменилось очень многое. В стандарт C++ были добавлены новые возможности, кардинально изменившие сам язык, а непрерывные исследования сообщества программистов на C++ обнаружили новые методы программирования на основе шаблонов. Поэтому, сохранив цели первого издания, мы, по сути, написали новую книгу — о шаблонах в современном C++.
Авторы подошли к написанию этой книги с различным уровнем подготовки и с различными намерениями. Дэвид, опытный разработчик компиляторов и активный участник рабочих групп Комитета по стандартизации C++, которые развивают основы языка, заинтересован в точном и подробном описании всей мощи (и проблем) шаблонов. Нико, “обычный” программист и член рабочей группы Комитета по стандартизации библиотеки C++, заинтересован в таком понимании всех методов применения шаблонов, которое помогло бы активно и с выгодой их использовать. Дуг, разработчик библиотеки шаблонов, превратившийся в разработчика компиляторов и проектировщика языка, заинтересован в сборе, классификации и оценке многочисленных методов, используемых для построения библиотек шаблонов. Кроме того, все мы хотели бы поделиться этими знаниями с вами и всем сообществом, чтобы помочь избежать дальнейших недоразумений, путаниц или опасений при работе с шаблонами C++.
Как следствие, книга содержит и концептуальное введение с примерами из повседневной практики, и подробное описание точного поведения шаблонов. По дороге от основных принципов применения шаблонов до “искусства программирования шаблонов” вам будут открываться (или переоткрываться заново) такие методы, как статический полиморфизм, свойства типов, метапрограммирование и шаблоны выражений. Вы получите более глубокое понимание стандартной библиотеки C++, в которой почти весь код включает шаблоны.
Во время написания этой книги авторы узнали много нового и получили массу удовольствия. Надеемся, что с читателями произойдет го же самое. Приятного чтения!
Если вам понравилась эта книга поделитесь ею с друзьями, тем самым вы помогаете нам развиваться и добавлять всё больше интересных и нужным вам книг! |
---|