1240116Smarcel// { dg-do run } 2240116Smarceltemplate<class T> class D 3240116Smarcel{ 4240116Smarcel public: 5240116Smarcel int f(); 6240116Smarcel}; 7240116Smarcel 8240116Smarceltemplate<class T> int D<T>::f() 9240116Smarcel{ 10240116Smarcel return sizeof(T); 11240116Smarcel} 12240116Smarcel 13240116Smarceltemplate<template<class> class D,class E> class C : D<E> 14240116Smarcel{ 15240116Smarcel public: 16240116Smarcel int g(); 17240116Smarcel}; 18240116Smarcel 19240116Smarceltemplate<template<class> class D,class E> int C<D,E>::g() 20240116Smarcel{ 21240116Smarcel return this->f(); 22240116Smarcel} 23240116Smarcel 24240116Smarcelclass E : C<D,int> 25240116Smarcel{ 26240116Smarcel public: 27240116Smarcel int h() { return this->g(); } 28240116Smarcel}; 29240116Smarcel 30240116Smarcelint main() 31240116Smarcel{ 32240116Smarcel E c; 33240116Smarcel c.h(); 34240116Smarcel} 35240116Smarcel