创建模板参数的默认值变量

时间:2015-11-30 11:55:49

标签: c++ templates

以下面的求和模板函数为例:

template <typename T>
T Sum(std::vector<T>& source)
{
    T v;
    for (auto it = source.begin(); it != source.end(); ++it)
    {
        v += *it;
    }
    return v;
}

这适用于定义+=运算符的自定义类型,但我怎样才能使其适用于基本类型,例如float

T v;将产生未初始化的值。

使用T v = 0;适用于float,但不适用于非基元。

2 个答案:

答案 0 :(得分:5)

刚刚初始化v

T v = T();

或在C ++ 11中

T v{};

答案 1 :(得分:3)

你可以初始化而不是默认初始化:

T v{};

这将调用类类型的默认构造函数,并对内置类型进行零初始化。