                 (linear_tid * ITEMS_PER_THREAD) + ITEMS_PER_THREAD);
 
         // Set head_flags for remaining items
-        Iterate<1, ITEMS_PER_THREAD>::FlagHeads(linear_tid, head_flags, input, preds, flag_op);
+        Iterate::FlagHeads(linear_tid, head_flags, input, preds, flag_op);
 
         // Set tail_flags for remaining items
-        Iterate<0, ITEMS_PER_THREAD - 1>::FlagTails(linear_tid, tail_flags, input, flag_op);
+        Iterate::FlagTails(linear_tid, tail_flags, input, flag_op);
     }
 
 

                (linear_tid * ITEMS_PER_THREAD) + ITEMS_PER_THREAD);

        // Set head_flags for remaining items
        Iterate<1, ITEMS_PER_THREAD>::FlagHeads(linear_tid, head_flags, input, preds, flag_op);

        // Set tail_flags for remaining items
        Iterate<0, ITEMS_PER_THREAD - 1>::FlagTails(linear_tid, tail_flags, input, flag_op);
    }



            FlagOp                  flag_op)                            ///< [in] Binary boolean flag predicate
        {
            #pragma unroll
            for (int i = 0; i < ITEMS_PER_THREAD - 1; ++i) {
                flags[i] = ApplyOp<FlagOp>::FlagT(
                    flag_op,
                    input[i],
