making shared_ptr working still need to add implicit conversions from nq::shared_ptr to std::shared_ptr