explicit non-throwing move constructor
diff --git a/tuple/include/tuple_sketch.hpp b/tuple/include/tuple_sketch.hpp
index 6a46eb8..2292937 100644
--- a/tuple/include/tuple_sketch.hpp
+++ b/tuple/include/tuple_sketch.hpp
@@ -367,7 +367,7 @@
 
   compact_tuple_sketch(const Base& other, bool ordered);
   compact_tuple_sketch(const compact_tuple_sketch&) = default;
-  compact_tuple_sketch(compact_tuple_sketch&&) noexcept = default;
+  compact_tuple_sketch(compact_tuple_sketch&&) noexcept;
   virtual ~compact_tuple_sketch() = default;
   compact_tuple_sketch& operator=(const compact_tuple_sketch&) = default;
   compact_tuple_sketch& operator=(compact_tuple_sketch&&) = default;
diff --git a/tuple/include/tuple_sketch_impl.hpp b/tuple/include/tuple_sketch_impl.hpp
index 8006331..63552d7 100644
--- a/tuple/include/tuple_sketch_impl.hpp
+++ b/tuple/include/tuple_sketch_impl.hpp
@@ -270,6 +270,15 @@
 }
 
 template<typename S, typename A>
+compact_tuple_sketch<S, A>::compact_tuple_sketch(compact_tuple_sketch&& other) noexcept:
+is_empty_(other.is_empty()),
+is_ordered_(other.is_ordered()),
+seed_hash_(other.get_seed_hash()),
+theta_(other.get_theta64()),
+entries_(std::move(other.entries_))
+{}
+
+template<typename S, typename A>
 compact_tuple_sketch<S, A>::compact_tuple_sketch(const theta_sketch_experimental<AllocU64>& other, const S& summary, bool ordered):
 is_empty_(other.is_empty()),
 is_ordered_(other.is_ordered() || ordered),