Using a typedef'd type as a non-type template parameter (to name a kernel) produces a compilation error. The error indicates that two declarations are seen - with the second using int rather than the alias name (here sz_t). The code below produces the error.
#include <CL/sycl.hpp>
using sz_t = unsigned long;
namespace kernels {
  template <sz_t> class K;  // Could be size_t         
}
int main(int argc, char *argv[])
{
  using namespace cl::sycl;
  queue q;
  q.submit([&](handler &cgh) {
    cgh.parallel_for<kernels::K<0>>(range<1>{64}, [=](id<1> ix) {
      ix[0];
    });
  });
  return 0;
}