Вам потребуется использовать параметр шаблона шаблона, например,
template <template <class> class Iter, class Elem>
void readIntoP(Iter<Elem> aCont) { /* ... */ }
Однако обратите внимание, что контейнеры стандартной библиотеки принимают несколько параметров шаблона (например, vector
принимает два: один для сохраняемого типа значения и один для используемого распределителя).
Вместо этого вы можете использовать один параметр шаблона для экземпляра типа контейнера, а затем использовать его value_type
typedef:
template <typename ContainerT>
void readIntoP(ContainerT aCont)
{
typedef typename ContainerT::value_type ElementT;
// use ContainerT and ElementT
}