     int             max_segment,
     ReductionOp     reduction_op,
     char*           key_type_string,
-    char*           value_type_string)
+    char*           value_type_string,
+    Int2Type<true>  is_primitive)
 {
     // Allocate host arrays
     Key* h_keys_in        = new Key[num_items];
     Key* h_keys_reference = new Key[num_items];
 
-    ConstantInputIterator<Value, int> h_values_in(1);
+    Value one_val;
+    InitValue(SEQ_INC, one_val, 1);
+    ConstantInputIterator<Value, int> h_values_in(one_val);
     Value* h_values_reference = new Value[num_items];
 
     // Initialize problem and solution



/**
 * Dispatch to unique entrypoint
 */
template <
    typename                    KeyInputIterator,

    int sm_version;
    CubDebugExit(SmVersion(sm_version, device_ordinal));

    TestPointer<CUB, int, int>(num_items, entropy_reduction, maxseg, cub::Sum(), CUB_TYPE_STRING(int), CUB_TYPE_STRING(int));
//    TestOp<int, int>(num_items, CUB_TYPE_STRING(int), CUB_TYPE_STRING(int));
//    TestOp<int, uint4>(num_items, CUB_TYPE_STRING(int), CUB_TYPE_STRING(uint4));

/*
#ifdef QUICK_TEST

    // Compile/run quick tests
    if (num_items < 0) num_items = 32000000;

    printf("int\n");
    TestPointer<THRUST, int, int>(num_items, entropy_reduction, maxseg, cub::Sum(), CUB_TYPE_STRING(int), CUB_TYPE_STRING(int));
    TestPointer<CUB, int, int>(num_items, entropy_reduction, maxseg, cub::Sum(), CUB_TYPE_STRING(int), CUB_TYPE_STRING(int));

    printf("RLE");
    TestIterator<THRUST, int, int>(num_items, entropy_reduction, maxseg, cub::Sum(), CUB_TYPE_STRING(int), CUB_TYPE_STRING(int), Int2Type<Traits<int>::PRIMITIVE>());
    TestIterator<CUB, int, int>(num_items, entropy_reduction, maxseg, cub::Sum(), CUB_TYPE_STRING(int), CUB_TYPE_STRING(int), Int2Type<Traits<int>::PRIMITIVE>());

    printf("float\n");
    TestPointer<THRUST, int, float>(num_items, entropy_reduction, maxseg, cub::Sum(), CUB_TYPE_STRING(int), CUB_TYPE_STRING(float));
