As shared_ptr doesn't automatically use std::default_delete<T>, it needs to be explicitly passed to the constructor.