* decl.c (make_typename_type): s/parameters/arguments/.
[official-gcc.git] / gcc / testsuite / g++.dg / cpp0x / noexcept11.C
blob6597f408744f3cde19344e0f66392d049e944db7
1 // PR c++/49107
2 // { dg-do compile { target c++11 } }
4 template<typename _Tp>
5 _Tp declval() noexcept;
7 template<typename _Tp , typename = decltype(_Tp(declval<_Tp&&>()))>
8 struct trait
10   static const bool value=true;
13 template<class _T2>
14 struct pair
16   _T2 second;
17   void swap(pair& __p)
18     noexcept(trait<_T2>::value);
21 template < class R_ >
22 struct Main
24   Main() {}
25   Main(const typename R_::Sub1T& r) ;
26   Main(const typename R_::Sub2T& l) ;
29 template < class R_ >
30 class Sub1
32   typedef pair<typename R_::MainT> Rep;
33   Rep base;
36 template < class R_ >
37 struct Sub2
39   typedef pair<typename R_::MainT> Rep;
40   Rep base;
43 struct Kernel
45   typedef Main<Kernel> MainT;
46   typedef Sub1<Kernel> Sub1T;
47   typedef Sub2<Kernel> Sub2T;
50 Main<Kernel> f()
52   return Main<Kernel> ();