@@ -151,9 +151,8 @@ min_value_(nullptr),
151151max_value_(nullptr ),
152152is_sorted_(false )
153153{
154- static_assert (std::is_convertible<From, T>::value
155- || std::is_constructible<From, T>::value,
156- " Copy constructor across types requires std::is_convertible or std::is_constructible" );
154+ static_assert (std::is_constructible<T, From>::value,
155+ " Type converting constructor requires new type to be constructible from existing type" );
157156
158157 base_buffer_.reserve (2 * std::min (quantiles_constants::MIN_K , k_));
159158
@@ -174,7 +173,7 @@ is_sorted_(false)
174173 for (auto pair : other) {
175174 const uint64_t wt = pair.second ;
176175 if (wt == 1 ) {
177- base_buffer_.push_back (pair.first );
176+ base_buffer_.push_back (T ( pair.first ) );
178177 // resize where needed as if adding points via update()
179178 if (base_buffer_.size () + 1 > base_buffer_.capacity ()) {
180179 const size_t new_size = std::max (std::min (static_cast <size_t >(2 * k_), 2 * base_buffer_.size ()), static_cast <size_t >(1 ));
@@ -183,7 +182,7 @@ is_sorted_(false)
183182 }
184183 else {
185184 const uint8_t idx = count_trailing_zeros_in_u64 (pair.second ) - 1 ;
186- levels_[idx].push_back (pair.first );
185+ levels_[idx].push_back (T ( pair.first ) );
187186 }
188187 }
189188
0 commit comments