Пределы BOOST_FUSION_ADAPT_STRUCT

Я пытался играть сBOOST_FUSION_ADAPT_STRUCT макрос и пробовал некоторые наивные вещи, такие как использование Fusion для печати любой произвольной структуры.

Начиная с этогопример кода приведен в документацииМне не удалось выполнить над моей адаптированной структурой некоторые операции, которые разрешены для последовательности слияния.

#include <boost/fusion/adapted.hpp>
#include <boost/fusion/sequence/io/out.hpp>
#include <boost/fusion/sequence/intrinsic.hpp>
#include <boost/fusion/view.hpp>
#include <iostream>

namespace fuz = boost::fusion;

namespace demo
{
    struct employee
    {
        std::string name;
        int age;
    };
}

// demo::employee is now a Fusion sequence
BOOST_FUSION_ADAPT_STRUCT(
    demo::employee,
    (std::string, name)
    (int, age))

int main()
{
    // tried to initialize an employee like a fusion sequence
    // but it didnt work
    // demo::employee e("bob", 42);

    demo::employee e;
    e.name = "bob";
    e.age = 42;

    // Access struct members with fusion random access functions
    // ok
    std::cout << fuz::at_c<0>(e) << std::endl; 

    // tried to print the struct like any othe fusion sequence
    // didnt work
    // std::cout << e << std::endl;

    // I made it work by using a fusion view
    // is it the right way?
    std::cout << fuz::as_nview<0, 1>(e) << std::endl;
}

Это приводит меня к следующим вопросам:

Почему магия Fusion здесь не работает?

Использование представления является правильным способом печати адаптированной структуры?

Как далеко можно использовать адаптированную структуру в качестве последовательности Fusion?

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

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