Limites de BOOST_FUSION_ADAPT_STRUCT

Eu tentei brincar com oBOOST_FUSION_ADAPT_STRUCT macro e tentei algumas coisas ingênuas, como usar o Fusion para imprimir qualquer estrutura arbitrária.

A partir destecódigo de exemplo fornecido na documentação, Não consegui executar na minha estrutura adaptada algumas operações permitidas com uma sequência de fusão.

#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;
}

Isso me leva às seguintes perguntas:

Por que a Fusion Magik não opera aqui?

Usar uma visualização é a maneira correta de imprimir uma estrutura adaptada?

Até que ponto uma estrutura adaptada pode ser usada como uma sequência do Fusion?

questionAnswers(2)

yourAnswerToTheQuestion