boost :: spirit :: qi y variables fuera de secuencia

Estoy escribiendo un analizador lexigráfico. Toma una cadena en inglés y la convierte en un conjunto de coordenadas de latitud / longitud. Es un poco como Google Earth.

De todos modos, he escrito mis tablas de símbolos y gramática, y felizmente analiza datos formateados.

struct LatLongDegrees
{
 std::string  dirLat_;
 double   degLat_;
 std::string     dirLong_;
 double   degLong_;
}

Por ejemplo: {"Norte", 23.59, "Este", -30.82}

Aquí está mi gramática:

 basic =(latitude >> ' ' >> double_ >> ' ' >> longitude >> ' ' >> double_);

Donde la latitud y la longitud son tablas de símbolos que se asignan desde direcciones de brújula a cadenas (por ejemplo, "e" a "Este")

Entonces, a mi pregunta:

Quiero agregar la siguiente regla a mi gramática, donde los símbolos de latitud y longitud están en las posiciones opuestas:

reversed = (longitude  >> ' ' >> double_ >> ' ' >> latitude >> double_ )

Esto analiza, PERO los valores degLat_ y degLong_ no se invierten junto con los valores de cadena. Simplemente se analizan directamente en la estructura, sin tener en cuenta las etiquetas de cadena.

¿Cómo construyo una estructura (o boost :: vector de fusión) cuando los datos a analizar no son secuenciales?

Respuestas a la pregunta(1)

Su respuesta a la pregunta