 
 
 // This is necessary to do a parametrized typed-test over multiple template arguments
-template <typename Key, typename Value>
+template <typename Key, typename Value, typename Aggregation_Operator>
 struct KeyValueTypes
 {
   using key_type = Key;
   using value_type = Value;
+  using op_type = Aggregation_Operator;
 };
 
 // Have to use a functor instead of a device lambda because

  EXPECT_EQ(begin->second, this->unused_value);
}

TYPED_TEST(MapTest, Insert)
{
  using key_type = typename TypeParam::key_type;

{
  using key_type = typename T::key_type;
  using value_type = typename T::value_type;
  using op_type = typename T::op_type;
  using map_type = concurrent_unordered_map<key_type, value_type, std::numeric_limits<key_type>::max()>;
  using pair_type = thrust::pair<key_type, value_type>;

