#include <iostream>
#include <type_traits>
#include <boost/type_index.hpp>
using namespace std;/*泛化版本*/
template<typename T>
struct FixedTraits;/*特化版本*/
template<>
struct FixedTraits<char>
{
using m_T = int;
};/*特化版本*/
template<>
struct FixedTraits<int>
{
using m_T = _int64;
};template <typename T>
auto sum(const T *begin, const T *end)
{
using S = typename FixedTraits<T>::m_T;S m_s{
};for (;;) {
if (begin == end) {
break;}m_s += (*begin);begin++;}return m_s;
}int main()
{
int a[2] = {
1,4 };std::cout << sum(a, a + 2) << std::endl;return 0;
}
通过给进去一种类型得到另一种类型。
我们计算两数之和的时候,可能会由于数据过大而造成溢出的情况,那么固定萃取就比较适合于这种场合。