当前位置: 代码迷 >> 综合 >> fixed traits(固定萃取)小结
  详细解决方案

fixed traits(固定萃取)小结

热度:38   发布时间:2023-12-12 03:35:30.0
#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;
}

通过给进去一种类型得到另一种类型。
我们计算两数之和的时候,可能会由于数据过大而造成溢出的情况,那么固定萃取就比较适合于这种场合。

  相关解决方案