Function flatten
boost::proto::flatten — A function that returns a "flattened" view of a Proto expression tree. 
 
Synopsis
Description
Для дерева с самой верхней меткой узла типа T элементы сплюснутой последовательности определяются путем рекурсии в каждый узел ребенка с одним и тем же типом тега и возвращения этих узлов различного типа. Так, например, дерево экспрессии Прото, соответствующее выражению a | b | c, имеет сплющенный вид с элементами [a, b, c], даже если дерево сгруппировано как ((a | b) | c).
Возвращенный вид представляет собой последовательность слияний.