【发布时间】:2010-08-20 08:23:12
【问题描述】:
我想提供一个模板化函数,根据模板类型的大小改变其实现(->专业化)。
类似的东西(省略类型转换),但没有 if/elseif:
template<class T>
T byteswap(T & swapIt)
{
if(sizeof(T) == 2)
{
return _byteswap_ushort (swapIt);
}
else if(sizeof(T) == 4)
{
return _byteswap_ulong(swapIt);
}
else if(sizeof(T) == 8)
{
return _byteswap_uint64(swapIt);
}
throw std::exception();
}
我知道有很多途径可以实现我的目标,但由于我尝试了解 SFINAE 和 type traits不被录取。
也许实现一个类特征 is_4ByteLong 并使用 boost::enable_if...
我不得不承认,我现在被困住了,所以我感谢你的帮助或建议
【问题讨论】: