Описание тега expression-templates

Шаблоны выражений - это метод метапрограммирования шаблонов C++, в котором шаблоны используются для представления части выражения в виде структуры времени компиляции, представляющей сплющенное абстрактное синтаксическое дерево указанного выражения. Он позволяет использовать такие идиомы, как ленивое вычисление и межпроцедурную оптимизацию внутри самого языка.

Шаблоны выражений - это метод метапрограммирования шаблонов C++, в котором шаблоны используются для представления части выражения в виде структуры времени компиляции, представляющей сплющенное абстрактное синтаксическое дерево указанного выражения. Он позволяет использовать такие идиомы, как ленивое вычисление и межпроцедурную оптимизацию внутри самого языка.

Основные работы по шаблонам выражений восходят к Вандевурду и его коллегам в их книге "Шаблоны C++: полное руководство" в 2002 году и Велдхуизену в статье 1995 года "Шаблоны выражений".

Как правило, шаблоны выражений используются для захвата произвольных больших выражений без создания временных файлов. Упомянутые выражения обычно преобразуются и превращаются в фактический код в надлежащем контексте оценки. Библиотеки линейной алгебры являются наиболее частым примером этой техники, но известны и другие области, такие как генератор синтаксического анализатора (Boost.spirit) или описание конечного автомата (Boost.MSM).

Если многие люди по-прежнему пишут шаблоны выражений вручную, Boost.proto предоставляет основу для их разработки без всех необходимых шаблонов. Он также предоставляет функции управления деревом, которые упрощают преобразование указанного выражения.

Шаблон выражения часто привязан к предметно-ориентированному языку, поскольку они обеспечивают эффективный способ реализации его внутри C++.