#include #include namespace utils::cuda { class Stream { public: Stream() : _p_stream(std::make_shared()) { cudaStreamCreate(_p_stream.get()); } virtual ~Stream() { if (_p_stream.use_count() == 1) cudaStreamDestroy(*_p_stream); } operator cudaStream_t() { return *_p_stream; } private: std::shared_ptr _p_stream; }; } // namespace utils::cuda