版权声明:本文为博主原创文章,如有需要,可以转载,但请注明出处。 https://blog.csdn.net/xunye_dream/article/details/82951484
功能:给定一个容器的类型,能够给出容器元素的类型。
实现方法(技术):采用局部特化。
#include <iostream>
#include <vector>
#include <stack>
#include <list>
#include <typeinfo>
using namespace std;
template<typename T>
struct ElementT; //base template
template<typename T>
struct ElementT<vector<T> >
{
typedef T Type;
};
template<typename T>
struct ElementT<stack<T> >
{
typedef T Type;
};
template<typename T>
struct ElementT<list<T> >
{
typedef T Type;
};
template<typename T>
void printElementType(T const& c)
{
cout << "Container of " << typeid(typename ElementT<T>::Type).name() << " elements." << endl;
}
int main(int argc, char **argv)
{
stack<double> s;
printElementType(s);
vector<float> vf;
printElementType(vf);
return 0;
}
输出结果:
Container of d elements.
Container of f elements.