何为类型萃取
类型萃取表面意思就是在合适的时机帮助我们选择合适的对象。
然而怎么去实现类型萃取,这个其实与模板的联系比较紧密。
给个案例,可以体会一下。
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;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下