Пределы 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?