You can use `unique_ptr` with a custom deleter for wrapping C libraries.
using snd_pcm_T = std::unique_ptr< snd_pcm_t, decltype([](void* ptr){snd_pcm_close(ptr);}) >; auto pcm_handle = snd_pcm_T(snd_pcm_open(...));