考虑这个例子:
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()
?