38 #ifndef ECUDA_PTR_COMMON_HPP
39 #define ECUDA_PTR_COMMON_HPP
41 #include "../global.hpp"
51 template<
typename T>
struct void_cast;
52 template<
typename T>
struct void_cast<const T*> {
__HOST__ __DEVICE__ inline void* operator()(
const T* ptr ) {
return reinterpret_cast<void*
>(
const_cast<T*
>(ptr) ); } };
53 template<
typename T>
struct void_cast {
__HOST__ __DEVICE__ inline void* operator()( T ptr ) {
return reinterpret_cast<void*
>(ptr); } };
88 delete []
reinterpret_cast<char*
>(ptr);
90 if( ptr ) cudaFree( detail::void_cast<T*>()(ptr) );
111 delete []
reinterpret_cast<char*
>(ptr);
113 if( ptr ) cudaFreeHost( detail::void_cast<T*>()(ptr) );
__HOST__ __DEVICE__ default_device_delete() __NOEXCEPT__
Constructs an ecuda::default_device_delete object.
The default destruction policy used by smart pointers to device memory.
The default destruction policy used by smart pointers to page-locked host memory. ...
__HOST__ __DEVICE__ void operator()(T *ptr) const
__HOST__ __DEVICE__ void operator()(T *ptr) const
Calls cudaFree() on a pointer.
__HOST__ __DEVICE__ __CONSTEXPR__ default_host_delete() __NOEXCEPT__
__HOST__ __DEVICE__ default_device_delete(const default_device_delete< U > &src) __NOEXCEPT__
Constructs an ecuda::default_device_delete object from another one.
__HOST__ __DEVICE__ default_host_delete(const default_host_delete< U > &src) __NOEXCEPT__