问题描述
考虑以下代码:
protected initialize<T>(props: Record<keyof typeof T,string>): void {
for (const [key,value] of Object.entries(props)) {
this.setAttribute(key.toLowerCase(),value);
}
}
带有/ O2的MSVC(16.7.1)x86为该功能生成以下程序集:
void MemMove8(void* dst,void* src)
{
char tmp[8];
memcpy(tmp,src,8);
memcpy(dst,tmp,8);
}
但是,如果输入和输出缓冲区重叠,这将不起作用(在某些情况下)。
生成的代码对我来说似乎是错误的;还是这是有效的转换,我在这里缺少什么?
解决方法
这是一个错误。
这似乎已在VS 16.8中得到解决。