 
 #pragma once
+#include <cstddef>
 #include <cub/cub.cuh>
 
 namespace gunrock {

           typename storage_t,
           typename input_t,
           typename output_t,
           typename select_t,
           typename int_t,
           typename stream_t>
  error_t select_unique(input_t * input,
                        output_t * output,
                        select_t * selected,
                        int_t count,
                        storage_t temp_storage = NULL,
                        size_t & temp_storage_bytes = 0,
                        stream_t stream = 0, // XXX: generalize
                        bool sync = false)


namespace device
{
    
//   template<select_t select_type = select_t::unique,
//            typename error_t,
//            typename storage_t,
//            typename input_t,
//            typename output_t,
//            typename flag_t,
//            typename op_t,
//            typename select_out_t,
//            typename int_t,
//            typename stream_t>
//   error_t select(input_t * input,
//                  output_t * output,
//                  select_out_t * selected,
//                  int_t count,
//                  storage_t * temp_storage = NULL,
//                  size_t & temp_storage_bytes = 0,
//                  flag_t * flags = std::nullptr,
//                  op_t op = std::nullptr;
//                  stream_t stream = 0, // XXX: generalize
//                  bool sync = false)
//   {}

  template<typename error_t,
           typename storage_t,
           typename input_t,
           typename output_t,
           typename flag_t,
           typename select_out_t,
           typename int_t,
           typename stream_t>
  error_t select_flagged(input_t * input,
                         flag_t * flags,
                         output_t * output,
                         select_out_t * selected,
                         int_t count,
                         storage_t * temp_storage = NULL,
                         size_t & temp_storage_bytes = 0,
                         stream_t stream = 0, // XXX: generalize
                         bool sync = false)
