   const int num_keys = 1<<8;
   const int num_values_per_key = this->THREAD_BLOCK_SIZE;
   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>();
 
   this->build_aggregation_table_device(input);
   this->verify_aggregation_table(expected_values);

                            KeyValueTypes<uint64_t, int64_t, count_op>,
                            KeyValueTypes<uint64_t, uint64_t, count_op>,
                            KeyValueTypes<int32_t, int32_t, sum_op>,
                            KeyValueTypes<unsigned int32_t, unsigned int32_t, sum_op>,
                            //KeyValueTypes<int32_t, float, sum_op>, // TODO: single precision floats don't current work due to numerical stability issues
                            KeyValueTypes<int32_t, double, sum_op>,
                            KeyValueTypes<int32_t, int64_t, sum_op>,
                            KeyValueTypes<int32_t, uint64_t, sum_op>,

  const int num_values_per_key = 1<<12;

  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);

  size_t computed_result_size = this->extract_groupby_result_device();
  this->verify_groupby_result(computed_result_size, expected_values);
}

// TODO Update the create_input function to ensure all keys are actually unique
