如果是数字,默认构造模板参数为零?

时间:2015-08-16 22:16:25

标签: c++ templates default-value

考虑这个例子:

template<typename T> auto f(T u, T v = T()) { return v; }
int main() {
    double a; float b; int c; long d;   // all possible numerical types here
    auto res1 = f(a);   // is res1 == 0.0?
    auto res2 = f(b);   // is res2 == 0.0?
    auto res3 = f(c);   // is res3 == 0?
    auto res4 = f(d);   // is res4 == 0?
}

标准是否保证只要T()是数字类型,T将默认构造零数值? 如果没有,我如何确保T是数字,那么'v'的默认参数是v = 0,如果T不是数字,那么 v = T()

0 个答案:

没有答案