------- Comment #3 from debian dot templier at free dot fr 2009-12-05 10:58 ------- missing in analyse of possible constructor : template < typename X , typename XT2 = T , typename X2 = typename XT2 :: X > SMART(SMART<X> & value) : data(value.operator T* ()) {} ;
with X=A XT2=T X2=T::A (X2 is unherited constraint(B is public derived of A ), XT2 is to delayed analyse of X2 at instanciation) you must change the resolution state : there is a probleme of matching with "typename X2 = typename XT2 :: X" =A then find the constructor possible for analyse in gcc constructors matching miss the reason is the scope "typename X2 = typename XT2 :: X" with X in "template < typename X ... " , i suppose X is not search in template parameter ... bug 42296 replace 42272 -- debian dot templier at free dot fr changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |UNCONFIRMED Resolution|DUPLICATE | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42296