我有一个<代码>std:vector - 类似类别,由2008年视觉C++汇编。 在该类别中,有一块被储存的部件被移走,要么重新定位,要么进行插入/部分清除。 现在有些类型只能是memmove(
>),而其他类型则需要在新地点复制,然后在原地点销毁。
目前,有一个模版功能,可以实施“影印-构造,然后销毁”,每个类型都有一个专业化功能,可以<代码>memmove(d)。 我愿使用V2008年C++支持类型 traits,以简化这项任务。
我想的是,对于每个PODmemmove(
),自动选定。 如果使用该模板的功能转移某些类型的<代码>memmove()d,那么我会容忍相反的情况——如果一个数据类型可以打上<代码>memmove(d>。
看像_is_pod()
内在,但MSDN说,它为建筑类型返回<代码>false。 因此,我还要使用<代码>_is_class()首先过滤非类别。
因此,我会采取以下行动:
if( !__is_class(T) ) { // not a struct and not a class - built-in type
//memmove()
} else if( __is_pod(T) ) { // is a struct or a class and is a POD
//memmove()
} else { // is a struct or a class and is not a POD
//DefaultMoveViaCopy()
}
我的解决办法是否可行?