n will always allow wrapped instances of
    <code>T</code> to be passed in place of <code>HeldType</code> arguments,
    specifying a smart pointer for <code>HeldType</code> allows users to pass
    Python <code>T</code> instances where a smart pointer-to-<code>T</code>
    is expected. Smart pointers such as <code>std::auto_ptr&lt;&gt;</code> or
    <code><a href=
    "../../../smart_ptr/shared_ptr.htm">boost::shared_ptr&lt;&gt;</a></code>
    which contain a nested type <code>element_type</code> designat