Dear David Sankel, I had forgotten to address this other point of the review: On Thu, Jun 27, 2019 at 10:08 AM David Sankel via Boost < boost@lists.boost.org> wrote:
The provided implementation works for smart pointers that follow conventions like the standard, but has some additional logic if the types happen to be `std::shared_ptr` or `boost::shared_ptr`. This hard coded special casing won't work with, say, a company specific shared pointer implementation. This relates to my earlier comment that the customization point should be simplified.
It would never work with your company's shared pointer, unless your
company happens to employ a shared pointer that contains a `.release()`
method that takes no arguments. I would find it incredibly surprisingly if
someone's shared pointer had a .release() method on it, given the decades
of nomenclature we have had around Boost and Standard smart pointers. And
even then, ensuring that such does not happen requires very little code in
the case that your shared pointer does have a .release() method:
namespace boost { namespace out_ptr {
template