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?