1*c87b03e5Sespie // Test for nested template template parameter feature 2*c87b03e5Sespie 3*c87b03e5Sespie template <template<template <class> class> class TTT> struct C 4*c87b03e5Sespie { fC5*c87b03e5Sespie int f() { return 0; } 6*c87b03e5Sespie }; 7*c87b03e5Sespie 8*c87b03e5Sespie template <template <class> class TT> struct D 9*c87b03e5Sespie { 10*c87b03e5Sespie int a; 11*c87b03e5Sespie }; 12*c87b03e5Sespie 13*c87b03e5Sespie template <template <class> class TT> struct E 14*c87b03e5Sespie { 15*c87b03e5Sespie int a; 16*c87b03e5Sespie int b; 17*c87b03e5Sespie }; 18*c87b03e5Sespie 19*c87b03e5Sespie template <template <template <template<class> class> class> class TTT> g(TTT<E> t)20*c87b03e5Sespieint g(TTT<E> t) 21*c87b03e5Sespie { 22*c87b03e5Sespie TTT<D> tt; 23*c87b03e5Sespie return tt.f(); 24*c87b03e5Sespie } 25*c87b03e5Sespie main()26*c87b03e5Sespieint main() 27*c87b03e5Sespie { 28*c87b03e5Sespie C<E> c; 29*c87b03e5Sespie g(c); 30*c87b03e5Sespie } 31