假设我已经定义了一个zero_initialize()函数:
template<class T>
T zero_initialize()
{
T result;
std::memset(&result, 0, sizeof(result));
return result;
}
// usage: auto data = zero_initialize<Data>();
Run Code Online (Sandbox Code Playgroud)
调用zero_initialize()某些类型会导致不确定的行为1,2.我目前正在执行T验证std::is_pod.由于这个特性在C++ 20中被弃用以及概念的出现,我很好奇zero_initialize()应该如何发展.
std::uninitialized_fill而不是std::memset吗?为什么?1) 删除班级的所有成员.
2) 在库类(std :: string)上使用memset时,"未定义的行为"是什么原因?[关闭]