   gpu_device.deallocate(d_res_float);
 }
 
+template<typename>
 void test_cuda_reductions() {
-  test_cuda_reductions(13, 13, 0);
-  test_cuda_reductions(13, 13, 1);
-
-  test_cuda_reductions(35, 36, 0);
-  test_cuda_reductions(35, 36, 1);
-
-  test_cuda_reductions(36, 35, 0);
-  test_cuda_reductions(36, 35, 1);
-}
-
+  test_cuda_reductions<void>(13, 13, 0);
+  test_cuda_reductions<void>(13, 13, 1);
+
+  test_cuda_reductions<void>(35, 36, 0);
+  test_cuda_reductions<void>(35, 36, 1);
+
+  test_cuda_reductions<void>(36, 35, 0);
+  test_cuda_reductions<void>(36, 35, 1);
+}
+
+template<typename>
 void test_cuda_full_reductions() {
   Eigen::CudaStreamDevice stream;
   Eigen::GpuDevice gpu_device(&stream);

  gpu_device.deallocate(d_res_float);
}


void test_cuda_elementwise() {
  Eigen::CudaStreamDevice stream;
  Eigen::GpuDevice gpu_device(&stream);

  gpu_device.deallocate(d_res_float);
}

template<typename>
void test_cuda_forced_evals() {

  Eigen::CudaStreamDevice stream;
