|
楼主 |
发表于 2010-6-22 21:15:59
|
显示全部楼层
搞定了
问一个vs2005中C++模板元关于类型匹配的问题
主要是想对类型进行识别,然后对他们调用不同的函数,代码如下:
template<int ty> struct TY{ int bb[ty];}; // 1,设置数组大小
#define VECTOR 1
#define MAP 2
template<int i> struct Dosome;
template<> struct Dosome<VECTOR>
{
template<typename T>
static void do(std::vector<T> & v){
//......
}
};
template<> struct Dosome<MAP>
{
template<typename T1, typename T2>
static void do(std::map<T1, T2>& m)
{
//....
}
};
struct VectorSpim
{
template<typename T> VectorSpim(std::vector<T> &t);
};
struct MapSpim
{
template <typename T1, typename T2> MapSpim(std::map<T1, T2>& t);
};
TY<VECTOR> Fun(bool,VectorSpim);
TY<MAP> Fun(bool, MapSpim)
template<typename T>
Type_trls
{
T& null_opt();
enum{_ret = (sizeof(Fun(null_opt())) / sizeof(int));} //2
};
template <typename T>
void Do(T& t)
{
Dosome<Type_trals<T>::_ret>::do(t);
}
修改了上面1,2两处后就可以了,具体是由于我对标准没摸清楚还是vs2005对这个地方不支持还有待考证。 |
|