1. class대신에 struct쓰면 되고...

struct foo {
    foo() {}
    virtual ~foo() {}
};

2. class대신에 typename쓰면 된다.

template<typename T>
struct bar {
    bar(T n): a(n) {}
    virtual ~bar() {}
private:
    T a;
};