     };
 
     /// Templated unrolling of item comparison (inductive case)
-    template <int ITERATION, int MAX_ITERATIONS>
     struct Iterate
     {
         /**

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

    /**

                (linear_tid * ITEMS_PER_THREAD) + ITEMS_PER_THREAD);

        // Set output for remaining items
        Iterate::FlagTails(linear_tid, output, input, flag_op);
    }


