Типичный пример (из книжки, как демонстрация):
C++ (Qt)
template<class T, template<class U, class = std::allocator<U>> class Seq>
class Container {
Seq<T> seq;
typedef typename Seq<T>::iterator iterator;
public:
void append(const T & t) { seq.push_back(t); }
iterator begin() { return seq.begin(); }
iterator end() { return seq.end(); }
};
int main()
{
Container<int, std::vector> container;
container.append(1);
container.append(2);
for (auto x : container) {
std::cout << x << std::endl;
}
return 0;
}