trait and policy

本文介绍了一个使用C++模板元编程实现的智能指针类SmartPtr,该类通过组合NullChecker和SingleThread类来提供安全检查和锁机制。此外,还展示了一个AverageTrait模板特化示例,用于计算不同类型参数的平均值。

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

Trait : type as first class value, great.
template <typename T>
struct AverageTrait
{
typedef T TAverage;
};

template<>
struct AverageTrait<int>
{
typedef float TAverage;
};

template <typename T>
typename AverageTrait<T>::TAverage
Average(T arg0, T arg1)
{
return (static_cast<typename AverageTrait<T>::TAverage>(arg0 + arg1))/2;
}

Average<int>(10,11)

-----------------------------------------------------------------
template <class T,
class Checker,
class ThreadModel>
struct SmartPtr: public Checker, ThreadModel{

T* operator->()
{
Check(p);
Lock(p);

return p;
}

explicit SmartPtr(T* aP)
{
p = aP;
}

~SmartPtr()
{
delete p;
}

T* p;
};

struct NullChecker
{
template< typename T>
void Check(T* p)
{

}
};

struct SingleThread
{
template< typename T>
void Lock(T* t)
{
}
};

SmartPtr<int, NullChecker ,SingleThread> sp(new int);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值