TypeTraits

本文介绍了一个使用模板实现的通用复制函数及一个用于判断类型是否为指针的TypeTraits类。通过具体示例展示了如何使用这些工具来处理不同类型的输入,并验证了其正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值