我正在尝试编写一个函数,它可以将任何标准容器(列表、堆栈、向量等)作为它的参数。我也想知道容器内的类型。这是我尝试过的。
#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);
}
此函数中的 once 类型container_type
始终是_Container_base_aux_alloc_empty
which(我认为)是标准容器的基类。
这里发生了什么?
我如何让这个函数返回正确的类型?