#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;
template<typename in,typename out>
void Copy(in infirst,in inlast,out outfirst)
{
for(;infirst != inlast;infirst++,outfirst++){
*outfirst = *infirst;
}
}
class NullType;
template<typename T>
class TypeTraits
{
private:
template<typename U>struct TypePanDuan{
enum{result = false};
typedef NullType ResPointee;
};
template<typename U>struct TypePanDuan<U*>{
enum{result = true};
typedef U* ResPointee;
};
public:
enum{IsPointer = TypePanDuan<T>::result};
typedef typename TypePanDuan<T>::ResPointee ResPointee;
};
int main(int argc, char *argv[])
{
/*TypeTraits<int> aa;
//TypeTraits<int>::ResPointee b;//这句是要出错的
TypeTraits<int*>::ResPointee b = new int(255);
cout<<*b<<endl;*/
bool IsIterPtr = TypeTraits<vector<int>::iterator>::IsPointer;
cout<<"vector<int>::iterator is "<< (IsIterPtr ? "yes" : "no") <<'/n';
system("PAUSE");
return EXIT_SUCCESS;
}
本文介绍了一个使用模板实现的通用复制函数及一个用于判断类型是否为指针的TypeTraits类。通过具体示例展示了如何使用这些工具来处理不同类型的输入,并验证了其正确性。
4786

被折叠的 条评论
为什么被折叠?



