   const int num_values_per_key = 1;
 
   auto input = this->create_input(num_keys, num_values_per_key);
-  auto expected_values = this->compute_reference_solution();
+  // When you have a templated member function of a templated class, the preceeding 'template' keyword is required
+  // See: https://stackoverflow.com/questions/16508743/error-expected-expression-in-this-template-code
+  using aggregation_op = typename GroupByTest<TypeParam>::op_type;
+  auto expected_values = this->template compute_reference_solution<aggregation_op>();
 
   const size_t computed_result_size = this->groupby(input.first, input.second);
   this->verify_groupby_result(computed_result_size,expected_values);

  const int num_values_per_key = 32;

  auto input = this->create_input(num_keys, num_values_per_key);
  auto expected_values = this->compute_reference_solution();

  this->build_aggregation_table_device(input);
  this->verify_aggregation_table(expected_values);

  const int num_keys = 1<<12;
  const int num_values_per_key = 1;
  auto input = this->create_input(num_keys, num_values_per_key);
  // When you have a templated member function of a templated class, the preceeding 'template' keyword is required
  // See: https://stackoverflow.com/questions/16508743/error-expected-expression-in-this-template-code
  using aggregation_op = typename GroupByTest<TypeParam>::op_type;
  auto expected_values = this->template compute_reference_solution<aggregation_op>();

  this->build_aggregation_table_device(input);
  this->verify_aggregation_table(expected_values);
