Я пытаюсь написать функцию, которая может принимать любой из стандартных контейнеров (список, стек, вектор и т. Д.) В качестве аргументов.Я также хотел бы знать тип, который находится внутри контейнера.Вот что я попробовал.
#include<iostream>
#include<list>
#include<vector>
template<class data_type, template<class> class container_type>
void type(container_type<data_type>& _container){
std::cout<<typeid(container_type).name()<<std::endl;
}
int main(){
std::list<int> list_t;
std::vector<int> vector_t;
type(list_t);
type(vector_t);
}
Тип container_type
, находящийся внутри этой функции, всегда равен _Container_base_aux_alloc_empty
, который (я думаю) является базовым классом стандартных контейнеров.
Что здесь происходит?
Как бы заставить эту функцию возвращать правильный тип?