1 // { dg-do run } 2 template<class T> class D 3 { 4 public: 5 int f(); 6 }; 7 f()8template<class T> int D<T>::f() 9 { 10 return sizeof(T); 11 } 12 13 template<template<class> class DD,class EE> class C : DD<EE> 14 { 15 public: 16 int f(); 17 }; 18 f()19template<template<class> class DD,class EE> int C<DD,EE>::f() 20 { 21 return DD<EE>::f(); 22 } 23 24 class E : C<D,int> 25 { 26 public: f()27 int f() { return C< ::D,int>::f(); } 28 }; 29 main()30int main() 31 { 32 E c; 33 c.f(); 34 } 35