Impulsionar o Espírito x3: analisar em estruturas

No tutorial do Boost Spirit X3:

Primeiro, vamos criar uma estrutura representando um funcionário:

namespace client { namespace ast
{
   struct employee
   {
       int age;
       std::string surname;
       std::string forename;
       double salary;
   };
}}

Então, precisamos informar ao Boost.Fusion sobre a estrutura de nossos funcionários para torná-lo um cidadão de fusão de primeira classe que a gramática pode utilizar.

BOOST_FUSION_ADAPT_STRUCT(
    client::ast::employee,
    (int, age)
    (std::string, surname)
    (std::string, forename)
    (double, salary)
)`

[...] Na visão de fusão, uma estrutura é apenas uma forma de uma tupla. Você pode adaptar qualquer estrutura para ser uma tupla de fusão totalmente em conformidade. [...] Aplicando nossas regras de recolhimento acima, o RHS tem um atributo de:fusion::vector<int, std::string, std::string, double> O funcionário struct é compatível com fusion :: vector. Portanto, o RHS de start usa o atributo start (um funcionário da estrutura) in situ quando faz seu trabalho.

Se bem entendi, essa lógica depende muito da ordem dos atributos.

Agora, estou em uma situação em que preciso analisar algo como

Layer "L1" {
    number = 23
    color = green
    visible = true
}

em uma estrutura

struct LayerInfo
{
    std::string layerName;
    int layerNumber;
    std::string color;
    bool visible;
}

O problema é,a ordem das propriedades da camada pode mudar, que está em oposição à lógica vista acima.

Qual é a maneira correta de analisar uma estrutura como esta? Preciso necessariamente usar ações semânticas?

questionAnswers(1)

yourAnswerToTheQuestion