前面的文章使用了type traits,其实traits还有value traits。
再看一下累加函数:
template<typename T>
struct traits;
template<>
struct traits<char>
{
typedef int AccuT;
};
template<>
struct traits<int>
{
typedef int AccuT;
};
template<class T>
typename traits<T>::AccuT accum3(const T* ptr, int len)
{
traits<T>::AccuT total = traits<T>::AccuT();
for (int i = 0; i < len; i++)
{
total += *(ptr + i);
}
return total;
}
注意这行代码:
traits<