#include <deque>
#include <vector>
#include <string>
+#include <tuple>
#include <boost/optional/optional_io.hpp>
#include <boost/tuple/tuple.hpp>
#include "include/memory.h"
+#include "common/convenience.h"
+
#include "byteorder.h"
#include "buffer.h"
assert(p.end());
}
-
-
-
// boost optional
template<typename T>
inline void encode(const boost::optional<T> &p, bufferlist &bl)
#pragma GCC diagnostic pop
#pragma GCC diagnostic warning "-Wpragmas"
-//triple tuple
+// std::tuple
+template<typename... Ts>
+inline void encode(const std::tuple<Ts...> &t, bufferlist& bl)
+{
+ ceph::for_each(t, [&bl](const auto& e) {
+ encode(e, bl);
+ });
+}
+template<typename... Ts>
+inline void decode(std::tuple<Ts...> &t, bufferlist::iterator &bp)
+{
+ ceph::for_each(t, [&bp](auto& e) {
+ decode(e, bp);
+ });
+}
+
+//triple boost::tuple
template<class A, class B, class C>
inline void encode(const boost::tuple<A, B, C> &t, bufferlist& bl)
{