// { dg-do run } | |
template<int T, class U = int> class D | |
{ | |
public: | |
int f(); | |
}; | |
template<int T, class U> int D<T,U>::f() | |
{ | |
return T+sizeof(U); | |
} | |
template<template<int> class D,class E> class C | |
{ | |
D<1> d; | |
public: | |
int f() { return d.f(); } | |
}; | |
template<template<int> class D> int f(D<2> &d1) | |
{ | |
d1.f(); | |
return 0; | |
} | |
template<template<int> class D> int f(D<1> &d1) | |
{ | |
d1.f(); | |
return 0; | |
} | |
int main() | |
{ | |
D<1> c1; | |
f(c1); | |
} |