   {
     size_t left_index{};
     size_t right_index{};
+
     result_type(size_t _l, size_t _r) : 
       left_index{_l}, right_index{_r} {}
+
+    // Overload comparison so the result vector can be sorted
+    bool operator <(result_type const& rhs){
+      return( std::tie(left_index, right_index) < std::tie(rhs.left_index, rhs.right_index) );
+    }
+
   };
 
   LeftJoinTest()

          result.emplace_back(left_index, right_index);
      }
    }
  }

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

    return match;
  }

  std::vector<result_type> compute_reference_solution(size_t num_columns)
  {
    assert(num_columns > 0);
    assert(num_columns <= std::tuple_size<multi_column_t>::value);
