所有类型的零值?

Vin*_*ent 5 c++ initialization zero c++11

在C++ 11中,有没有办法将算术类和类类型的值初始化为零(算术类型的运行时绝对没有开销)?

template<typename T> void myFunction(T& x)
{
    x = 0; // How to make this works for T = double but also for T = std::string ?
}
Run Code Online (Sandbox Code Playgroud)

Som*_*ude 10

您可以使用默认构造函数"清除"变量:

template<class T>
void clear(T &v)
{
    v = T();
}
Run Code Online (Sandbox Code Playgroud)

这适用于所有基本类型,指针和类型,它们具有默认构造函数赋值运算符(默认情况下所有类都将具有,除非被告知,或者它们被保护/私有).