对于下面的示例,是否可以避免严格的别名警告warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
,而不保留指针,而不使用任何编译器特定的扩展名,new
返回的位置?在这个例子中是否有可能避免严格的别名违规?
int main()
{
alignas(::std::string) char a[sizeof(::std::string)];
new (a) ::std::string;
auto& s(*reinterpret_cast<::std::string*>(a));
return s.size();
}
那是什么代码???您想做什么 ??? –
@StephaneRolland避免/注意警告。 – user1095108
“保留指针,”新“返回的位置正是如何做到这一点。你为什么不想这样做? –