error C2338: You've instantiated std::aligned_storage<Len, Align> with an extended alignment (in other words, Align >

 

 

报的完整错误为:

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.(讨论)

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...