Closed
Description
Just tried to build v1.11.1.
Basically, either _ENABLE_EXTENDED_ALIGNED_STORAGE
or _DISABLE_EXTENDED_ALIGNED_STORAGE
must (apparently) be defined.
See failing build here.
Error:
c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.15.26726\include\type_traits(1271):
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.
(compiling source file C:\Users\appveyor\.conan\data\aeron\1.11.1\helmesjo\stable\build\a7a6633935b73a476db9d5ac9aade5d58663ba47\source_subfolder\aeron-client\src\main\cpp\Aeron.cpp) [C:\Users\appveyor\.c
VS patch notes regarding this:
Fixed a long-standing bug that caused aligned_storage to treat requests for alignment greater than
alignof(max_align_t) as requests for alignment equal to alignof(max_align_t). We can’t enable this fix
unconditionally without breaking ABI since doing so changes layout of types with members whose type
is a highly-aligned specialization of aligned_storage. As an interim solution until a future ABI-breaking
release, compilation of programs that use highly-aligned aligned_storage produces a compile error
explaining this issue and asking the user to define either _ENABLE_EXTENDED_ALIGNED_STORAGE to
request the conforming-but-potentially-ABI-breaking behavior, or
_DISABLE_EXTENDED_ALIGNED_STORAGE to request the previous incorrect-but-ABI-safe behavior.
Metadata
Metadata
Assignees
Labels
No labels