/* { dg-do compile } */ /* { dg-options "-O2" } */ struct adaptor_base { }; struct bound_argument { bound_argument(); }; template struct adaptor_functor : public adaptor_base { explicit adaptor_functor(const T_functor& _A_functor) : functor_(_A_functor) { } T_functor functor_; bound_argument bound_; }; template struct adapts : public adaptor_base { explicit adapts(const T_functor& _A_functor) : functor_(_A_functor) { } adaptor_functor functor_; }; int main() { adapts > a (adapts(1)); }