// PR c++/49107 // { dg-options -std=c++0x } template _Tp declval() noexcept; template()))> struct trait { static const bool value=true; }; template struct pair { _T2 second; void swap(pair& __p) noexcept(trait<_T2>::value); }; template < class R_ > struct Main { Main() {} Main(const typename R_::Sub1T& r) ; Main(const typename R_::Sub2T& l) ; }; template < class R_ > class Sub1 { typedef pair Rep; Rep base; }; template < class R_ > struct Sub2 { typedef pair Rep; Rep base; }; struct Kernel { typedef Main MainT; typedef Sub1 Sub1T; typedef Sub2 Sub2T; }; Main f() { return Main (); }