Компилятор - его нет в поддерживаемом наборе для Spirit X3, AFAIK. X3 все еще экспериментальный

ебника Boost Spirit X3:

Сначала давайте создадим структуру, представляющую сотрудника:

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

Затем нам нужно рассказать Boost.Fusion о нашей структуре сотрудников, чтобы сделать ее первоклассным гражданином, способным использовать грамматику.

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

[...] По мнению Fusion, структура - это просто форма кортежа. Вы можете адаптировать любую структуру, чтобы она полностью соответствовала фьюжн-кортежу. [...] Применяя наши правила свертывания выше, RHS имеет атрибут:fusion::vector<int, std::string, std::string, double> Сотрудник struct совместим с fusion :: vector. Таким образом, RHS при запуске использует атрибут start (сотрудник struct) на месте, когда он выполняет свою работу.

Если я хорошо понял, эта логика сильно зависит от порядка атрибутов.

Теперь я нахожусь в ситуации, когда мне нужно разобрать что-то вроде

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

в структуру

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

Проблема в,порядок свойств слоя может меняться, что противоречит логике, приведенной выше.

Какой правильный способ разобрать в структуру, как это? Нужно ли обязательно использовать семантические действия?

Ответы на вопрос(0)

Ваш ответ на вопрос