报的完整错误为:
error C2338: You‘ve instantiated std::aligned_storage<Len,Align> with an extended alignment (in other words,Align > alignof(max_align_t)). Before VS 2017 15.8,the member type would non-conformingly have an alignment of only alignof(max_align_t). VS 2017 15.8 was fixed to handle this correctly,but the fix inherently changes layout and breaks binary compatibility (*only* for uses of aligned_storage with extended alignments). Please define either (1) _ENABLE_EXTENDED_ALIGNED_STORAGE to ackNowledge that you understand this message and that you actually want a type with an extended alignment,or (2) _disABLE_EXTENDED_ALIGNED_STORAGE to silence this message and get the old non-conformant behavior.
大概意思就是:VS2017 15.8版本修复了老版本有关对齐存储部分缺陷,但修复本身也有缺陷。如果不想编译时报这个问题,就在预编译时定义一个宏 _ENABLE_EXTENDED_ALIGNED_STORAGE 或者 _disABLE_EXTENDED_ALIGNED_STORAGE(博主的理解是按照修复后的逻辑处理就定义带enable那个,按照老版本的逻辑处理就定义带disable那个)
参考解决方法:
打开 项目属性页 -- > C/C++ --> Preprocessor --> Preprocessor DeFinitions
里面添加,_disABLE_EXTENDED_ALIGNED_STORAGE
即可。
参考文章
error C2338: You‘ve instantiated std::aligned_storage《Len,Align》 with an extended alignment.(讨论)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。