 
 // Creates a gdf_column from a std::vector
 template <typename col_type>
-gdf_column create_gdf_column(std::vector<col_type> host_vector)
+gdf_column create_gdf_column(std::vector<col_type> const & host_vector)
 {
   // Copy host vector to device
   thrust::device_vector<col_type> device_vector(host_vector);


// A new instance of this class will be created for each *TEST(InnerJoinTest, ...)
// Put all repeated setup and validation stuff here
template <typename multi_column_t>
struct InnerJoinTest : public testing::Test
{
  multi_column_t left_columns;

  multi_column_t right_columns;


    return result;
  }


  //gdf_error gdf_multi_left_join_generic(int num_cols, gdf_column **leftcol, gdf_column **rightcol, gdf_join_result_type **out_result)
};

template<join_kind join_type, typename tuple_type>
struct TestParameters
{
  const static join_kind join_method{join_type};
  using multi_column_t = tuple_type;
};


typedef ::testing::Types< TestParameters< join_kind::INNER, std::tuple<std::vector<int>> >,
                          TestParameters< join_kind::LEFT, std::tuple<std::vector<int>, std::vector<int>> >
                          > Implementations;

TYPED_TEST_CASE(InnerJoinTest, Implementations);

TYPED_TEST(InnerJoinTest, debug)
{
  this->create_input(5,2,3,2,true);

  std::vector<result_type> result = this->compute_reference_solution(true);
}
