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