Even though the no_unique_address attribute has only been standardized in C++20, compilers seem to support it with C++17 already.
This attribute allows reducing the memory footprint of structs which have empty types as data members (usually that is an allocator or inline buffer in Blender).
Previously, one had to use the empty base optimization to achieve the same effect which requires a lot of boilerplate (https://en.cppreference.com/w/cpp/language/ebo).
More info about the attribute: https://en.cppreference.com/w/cpp/language/attributes/no_unique_address
The types that benefit from this attribute the most are Vector and Array:
Type Old New ------------------------------- Array<int> 40 32 Array<int, 0> 24 16 Vector<int> 48 40 Vector<int, 0> 32 24
All types which use these core data structures get smaller as well of course.