
We've recently been evaluating a move from boost 1.38 to 1.42 [MSVC71], and we had some code that breaks down to the following: [1] struct T {}; [2] std::auto_ptr<T> ap; [3] boost::shared_ptr<T> sp = ap; Line [3] stopped compiling because of the 'explicit' introduced (in shared_ptr.hpp) at line [L] (below).
From smart_ptr/shared_ptr.hpp:
[A] template<class Y>
[B] explicit shared_ptr(std::auto_ptr<Y> & r): px(r.get()), pn()
[C] {
[D] Y * tmp = r.get();
[E] pn = boost::detail::shared_count(r);
[F] boost::detail::sp_enable_shared_from_this( this, tmp, tmp );
[G] }
[H]
[I]#if !defined( BOOST_NO_SFINAE ) && !defined(
BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
[J]
[K] template<class Ap>
[L] explicit shared_ptr( Ap r, typename
boost::detail::sp_enable_if_auto_ptr