Definir analizadores parametrizados con sub-analizadores en Boost Spirit

Me gustaría convertir algún código de análisis antiguo escrito a mano en Boost Spirit y aprender (más de) espíritu en el proceso. El código antiguo usa secuencias y plantillas para analizar definiciones de algunos tipos de datos y algunos contenedores.

Algunos formatos típicos:

VECTOR[number_of_items,(item_1, item_2 .... item_n)]
PAIR(p1, p2)
RECT[(left,top)-(right,bottom)]
Point( x, y )
Size( x, y )

Las funciones de análisis son plantillas con el tipo de elementos como parámetro de plantilla y utilizan flujos como entrada, por ejemplo.

 template<class T> std::istream& operator>>(std::Stream& in, std::vector<T>& v);

 template<class T1, class T2> std::istream& operator>>(std::istream& in, std::pair<T1, T2>& p);

 template<class T1, class T2> std::istream& operator>>(std::istream& in, RectType<T>& r);
 etc.

El analizador (extractor de secuencias) para vectores llama al analizador para el tipo de plantillas.

Usando estos es posible analizar definiciones de rectángulos enteros, rectángulos dobles y vectores de pares de cadenas y enteros.

¿Es posible con Spirit escribir analizadores con plantillas que llaman a los sub-analizadores para el tipo de plantilla?

Respuestas a la pregunta(2)

Su respuesta a la pregunta