// { dg-do run  }
// GROUPS passed templates
extern "C" int printf (const char *, ...);
extern "C" void exit (int);

int count = 0;

void
die (int x)
{
  if (x != ++count)
    {
      printf ("FAIL\n");
      exit (1);
    }
}

class A {
  public:
    void   f() const { die (-1); }
};


template <class Item>
class B : public A {
  public:
  void f() const;
};

template <class Item>
inline void B<Item>::f() const { die (1); }

template <class Item>
class C : public A {
  public:
    void f() const { die (2); }
};


int main()
{
    B<int> b;
    C<int> c;

    b.f(); //- bugged, (A::f() called instead of B::f())
    c.f(); //- works fine (C::f() called)

    printf ("PASS\n");
    return 0;
}
