1/* { dg-do run } */
2
3namespace FOO {
4
5template <typename T>
6class A
7{
8public:
9    void Enum();
10    virtual void OnProv() = 0;
11    virtual ~A() { }
12};
13typedef A<char> B;
14
15template<typename T>
16void A<T>::Enum ()
17{
18    OnProv ();
19}
20} // namespace FOO
21
22class C {};
23
24class D: public C, public FOO::B {
25public:
26    void OnProv() {}
27};
28
29int main(int argc, char *argv[])
30{
31    D x;
32    x.Enum();
33    return 0;
34}
35