何为类型萃取

类型萃取表面意思就是在合适的时机帮助我们选择合适的对象。

然而怎么去实现类型萃取,这个其实与模板的联系比较紧密。

给个案例,可以体会一下。

struct FalseType
{
bool Get()
{
return false;
}
};
struct TrueType
{
bool Get()
{
return true;
}
};

template<class T>
struct TypeTraits
{
typedef FalseType IsPodType;
};
template<>
struct TypeTraits<int>
{
typedef TrueType IsPodType;
};

...//特化所有内置类型
void Reserve(size_t n)
{
if (n > Capacity())
{
size_t size = Size();
T* tmp = new T[n];
if (size > 0)
{
if (TypeTraits<T>::IsPodType().Get())
{
memcpy(this->_start, tmp, sizeof(T)*size);
}
else
{
for (int i = 0; i < size; i++)
{
tmp[i] = _start[i];
}
}
delete[] _start;
}
_start = tmp;
_finish = _start + size;
_endofstorage = _start + n;
}
}

posted @   肆空界  阅读(41)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示