use std::shared_ptr in the c++ backend