fixed move and serialized size
diff --git a/req/include/req_sketch_impl.hpp b/req/include/req_sketch_impl.hpp
index 9c9a31a..e6f4f71 100755
--- a/req/include/req_sketch_impl.hpp
+++ b/req/include/req_sketch_impl.hpp
@@ -144,7 +144,7 @@
if (C()(item, *min_value_)) *min_value_ = item;
if (C()(*max_value_, item)) *max_value_ = item;
}
- compactors_[0].append(item);
+ compactors_[0].append(std::forward<FwdT>(item));
++num_retained_;
++n_;
if (num_retained_ == max_nom_size_) compress();
@@ -360,13 +360,13 @@
if (is_empty()) return size;
if (is_estimation_mode()) {
size += sizeof(n_);
- S().size_of_item(*min_value_);
- S().size_of_item(*max_value_);
+ size += S().size_of_item(*min_value_);
+ size += S().size_of_item(*max_value_);
}
if (n_ == 1) {
- size += sizeof(TT);
+ size += S().size_of_item(*compactors_[0].begin());
} else {
- for (const auto& compactor: compactors_) size += compactor.get_serialized_size_bytes();
+ for (const auto& compactor: compactors_) size += compactor.get_serialized_size_bytes(S());
}
return size;
}