In case of template template paramater
template <typename T, template <typename> class Wrapper>
class Foo {
//...
private:
Wrapper<T> data;
};
You have to use class before classname.
This is wrong:
template <typename T, template <typename> typename Wrapper>
but this is ok:
template <typename T, template <class> class Wrapper>
In other cases they are interchangeable.