Minor request following up on the Gitter chat with @pavanky regarding the template argument needed to get a device memory pointer, I wonder if it would be reasonable to add an explicit instantiation of the function for T=void?
Would be more explicit than void *ptr = a.device<char>(), suggesting the template type would actually match the unknown data type. Also, when calling a function overload specific to void * where another function specialization may handle the char * differently, one cannot just pass a.device<char>() as argument without an explicit cast to avoid the wrong overload to be called. None of this is critical and can obviously dealt with easily on the client code side. But I was just wondering if it wouldn't be easy to allow a.device<void>(), document it, and provide the needed template specialization for the linker?