// { dg-do compile } // { dg-options "-O -fno-toplevel-reorder -fno-inline -fipa-cp -fipa-cp-clone -fkeep-inline-functions" } template < typename Derived > struct AnyMatrixBase { }; struct Matrix Random (); struct Matrix:AnyMatrixBase < Matrix > { void bar () { throw; } void foo (Matrix other) { bar (); Matrix (AnyMatrixBase < Matrix > (Random ())); } template < typename OtherDerived > Matrix (AnyMatrixBase < OtherDerived > other) { foo (other); } }; Matrix x (Random ());