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