@@ -278,36 +278,41 @@ struct Row
278278 else if constexpr (std::is_same_v<T, SparseVector> &&
279279 std::is_same_v<ArgType, std::shared_ptr<Row>>)
280280 {
281- SparseVector sparse_vector;
281+ if constexpr (std::is_same_v<T, SparseVector>)
282+ {
283+ SparseVector sparse_vector;
282284
283- auto type_field = std::find_if (arg->column_names .begin (), arg->column_names .end (), [](const std::string& col_name) {
284- return col_name == " type" ;
285- });
285+ auto type_field = std::find_if (arg->column_names .begin (), arg->column_names .end (), [](const std::string& col_name) {
286+ return col_name == " type" ;
287+ });
286288
287- if (type_field == arg->column_names .end () || std::get<int8_t >(arg->values .at (arg->col_index (" type" ))) != 0 )
288- return sparse_vector;
289+ if (type_field == arg->column_names .end () || std::get<int8_t >(arg->values .at (arg->col_index (" type" ))) != 0 )
290+ return sparse_vector;
289291
290- auto size = std::get<int32_t >(arg->values .at (arg->col_index (" size" )));
291- auto indice_array_data = std::get<std::shared_ptr<ArrayData>>(arg->values .at (arg->col_index (" indices" )));
292- auto values_array_data = std::get<std::shared_ptr<ArrayData>>(arg->values .at (arg->col_index (" values" )));
292+ auto size = std::get<int32_t >(arg->values .at (arg->col_index (" size" )));
293+ auto indice_array_data = std::get<std::shared_ptr<ArrayData>>(arg->values .at (arg->col_index (" indices" )));
294+ auto values_array_data = std::get<std::shared_ptr<ArrayData>>(arg->values .at (arg->col_index (" values" )));
293295
294- std::vector<int > indices;
295- std::vector<double > values;
296+ std::vector<int > indices;
297+ std::vector<double > values;
296298
297- indices.reserve (indice_array_data->elements .size ());
298- values.reserve (values_array_data->elements .size ());
299+ indices.reserve (indice_array_data->elements .size ());
300+ values.reserve (values_array_data->elements .size ());
299301
300- for (int i = 0 ; i < indice_array_data->elements .size (); i++)
301- {
302- indices.push_back (std::get<int32_t >(indice_array_data->elements [i]));
303- }
302+ for (int i = 0 ; i < indice_array_data->elements .size (); i++)
303+ {
304+ indices.push_back (std::get<int32_t >(indice_array_data->elements [i]));
305+ }
304306
305- for (int i = 0 ; i < values_array_data->elements .size (); i++)
306- {
307- values.push_back (std::get<double >(values_array_data->elements [i]));
308- }
307+ for (int i = 0 ; i < values_array_data->elements .size (); i++)
308+ {
309+ values.push_back (std::get<double >(values_array_data->elements [i]));
310+ }
309311
310- return SparseVector{size, indices, values};
312+ return SparseVector{size, indices, values};
313+ }
314+ else
315+ throw std::runtime_error (" unreachable" );
311316 }
312317 else
313318 {
0 commit comments