Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <boost/fusion/container/map.hpp>
- #include <boost/fusion/include/map.hpp>
- #include <boost/fusion/container/map/map_fwd.hpp>
- #include <boost/fusion/include/map_fwd.hpp>
- #include <boost/fusion/sequence/intrinsic/at_key.hpp>
- #include <boost/fusion/include/at_key.hpp>
- #include <boost/fusion/include/io.hpp>
- #include <boost/archive/text_iarchive.hpp>
- struct fieldOne {};
- struct fieldTwo {};
- typedef boost::fusion::map<
- boost::fusion::pair<fieldOne, int>,
- boost::fusion::pair<fieldTwo, double>
- > tFusionMap;
- int main() {
- tFusionMap map;
- boost::archive::text_iarchive ar(std::cin);
- std::cin >> map; /* no compile error */
- ar & map; /* compiler error: */
- return 0;
- }
- struct boost::fusion::map<boost::fusion::pair<fieldOne, int>,
- boost::fusion::pair<fieldTwo, double> >’ has no member named ‘serialize’
- fusion_serialize(ar, m);
- ar & m;
- namespace boost {
- namespace serialization {
- template<class Archive, typename T, std::size_t num_dims>
- void serialize( Archive & ar, T & map, const unsigned int version ) {
- fusion_serialize(ar,map);
- }
- }
- }
- namespace boost { namespace serialization {
- struct saver {
- template <typename Ar, typename Pair>
- void operator()(Ar& ar, Pair& data) const
- {
- ar & data.second;
- }
- };
- template <typename Ar, typename... TArgs>
- void serialize(Ar& ar, boost::fusion::map<TArgs...>& fmap, unsigned /*version*/)
- {
- using phoenix::ref;
- using phoenix::arg_names::arg1;
- static const phoenix::function<saver> save {};
- fusion::for_each(fmap, save(ref(ar), arg1));
- }
- } }
- #include <boost/archive/text_oarchive.hpp>
- #include <iostream>
- typedef boost::fusion::map<
- boost::fusion::pair<struct fieldOne, int>,
- boost::fusion::pair<struct fieldTwo, double>
- > tFusionMap;
- int main() {
- tFusionMap map { 42 , M_PI };
- boost::archive::text_oarchive oa(std::cout);
- oa & map;
- }
- 22 serialization::archive 10 0 0 42 3.1415926535897931
- #include <boost/fusion/include/map.hpp>
- #include <boost/fusion/algorithm.hpp>
- #include <boost/phoenix/phoenix.hpp>
- #include <boost/phoenix/fusion.hpp>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement