fork download
  1. #include <iostream>
  2. #include <tuple>
  3.  
  4.  
  5. struct point : std::tuple<int, int, int>
  6. {
  7. enum { x, y, z };
  8. };
  9.  
  10.  
  11. //
  12. // Overloads to be "found" by boost::serialization.
  13. //
  14. template<typename Archive, typename T0>
  15. void serialize(Archive & ar, std::tuple<T0> & t, const unsigned int)
  16. {
  17. ar & std::get<0>(t);
  18. }
  19.  
  20.  
  21. template<typename Archive, typename T0, typename T1>
  22. void serialize(Archive & ar, std::tuple<T0, T1> & t, const unsigned int)
  23. {
  24. ar & std::get<0>(t);
  25. ar & std::get<1>(t);
  26. }
  27.  
  28.  
  29. template<typename Archive, typename T0, typename T1, typename T2>
  30. void serialize(Archive & ar, std::tuple<T0, T1, T2> & t, const unsigned int)
  31. {
  32. ar & std::get<0>(t);
  33. ar & std::get<1>(t);
  34. ar & std::get<2>(t);
  35. }
  36.  
  37.  
  38. //
  39. // General method?
  40. //
  41. template<typename Archive, typename Head, typename ...Tail>
  42. void serialize(Archive & ar, std::tuple<Head, Tail...> & t, const unsigned int version)
  43. {
  44. ar & std::get<0>(t);
  45. serialize(ar, get_tail_dummy(t), version);
  46. }
  47.  
  48.  
  49. int main()
  50. {
  51. point p;
  52. int archive = 0;
  53. serialize(archive, p, 1);
  54. }
Success #stdin #stdout 0s 2924KB
stdin
Standard input is empty
stdout
Standard output is empty