32 std::enable_if_t<is_same_type_template_v<T, std::tuple> || is_same_type_template_v<T, std::pair>>>
35 struct serialize_tuple;
39 template <
size_t... INDEX>
40 struct serialize_tuple<std::index_sequence<INDEX...>>
42 void operator()(T& t,
serializer& ser, ser_opt_t opt)
44 (SST_SER_NAME(std::get<INDEX>(t), std::to_string(INDEX).c_str(), opt), ...);
48 void operator()(T& t,
serializer& ser, ser_opt_t options)
50 ser_opt_t opt = SerOption::is_set(options, SerOption::as_ptr_elem) ? SerOption::as_ptr : SerOption::none;
51 switch ( ser.mode() ) {
54 if constexpr ( is_same_type_template_v<T, std::pair> ) {
56 SST_SER_NAME(t.first,
"first", opt);
57 SST_SER_NAME(t.second,
"second", opt);
61 serialize_tuple<std::make_index_sequence<std::tuple_size_v<T>>>()(t, ser, opt);
63 ser.mapper().map_hierarchy_end();
68 std::apply([&](
auto&... e) { ((SST_SER(e, opt)), ...); }, t);
73 SST_FRIEND_SERIALIZE();