/* * tuple.h * * Created on: Jan 29, 2013 * Author: vincent */ #ifndef ATLAS_TUPLE_H_ #define ATLAS_TUPLE_H_ #include #include "type_traits.h" namespace atlas { namespace { template void aux_serialize(Archive& ar, std::tuple& t, single_parameter_pack_tag) { ar & std::get(t); } template void aux_serialize(Archive& ar, std::tuple& t, not_single_parameter_pack_tag) { ar & std::get(t); aux_serialize(ar, t, atlas::is_last_parameter()); } template void serialize(Archive& ar, std::tuple& t, last_parameter_tag) { ar & std::get<0>(t); } template void serialize(Archive& ar, std::tuple& t, not_last_parameter_tag) { aux_serialize<0>(ar, t, std::false_type()); } } } // atlas namespace boost { namespace serialization { template Archive& serialize(Archive& ar, std::tuple& t, const unsigned int version) { atlas::serialize(ar, t, atlas::is_single_parameter_pack()); return ar; } } // serialization } // boost #endif /* TUPLE_H_ */