cpp:boost_fusion
**This is an old revision of the document!**
- snippet.cpp
#include <boost/fusion/algorithm/iteration/for_each.hpp>
#include <boost/fusion/container/vector.hpp>
#include <iostream>
struct Callback_base {
virtual int execute() = 0;
};
struct Up final : Callback_base {
int execute() override
{
return 3;
}
};
struct Down final : Callback_base {
int execute() override
{
return 4;
}
};
struct Home final : Callback_base {
int execute() override
{
return 5;
}
};
template<std::size_t ID, typename T>
struct E {
std::size_t id = ID;
T cb;
};
int main(int argc, char** argv)
{
boost::fusion::vector<E<1, Up>, E<2, Down>, E<3, Home>> vec{};
std::size_t r{42};
boost::fusion::for_each(vec, [argc,&r](auto i) {
if (i.id == argc)
{
r = i.cb.execute();
}
});
return r;
}
cpp/boost_fusion.1589227636.txt.gz · Last modified: by allspark