diff options
author | Jacques Lucke <jacques@blender.org> | 2022-05-25 17:28:07 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2022-05-25 17:28:07 +0300 |
commit | a337e7738fbf2ec1eaec4c1deb46d28840885758 (patch) | |
tree | b7b3d436363d8ab07c9fbfa0067233c1c604b652 /source/blender/blenlib/BLI_vector_set.hh | |
parent | f381c31ac69cb8a6175a54dc31863e13e9b199d6 (diff) |
BLI: use no_unique_address attribute
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 code.
The types that benefit from this the most are `Vector` and `Array`, which
usually become 8 bytes smaller. All types which use these core data structures
get smaller as well of course.
Differential Revision: https://developer.blender.org/D14993
Diffstat (limited to 'source/blender/blenlib/BLI_vector_set.hh')
-rw-r--r-- | source/blender/blenlib/BLI_vector_set.hh | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/source/blender/blenlib/BLI_vector_set.hh b/source/blender/blenlib/BLI_vector_set.hh index 4ae1bf9000d..b0a3696f245 100644 --- a/source/blender/blenlib/BLI_vector_set.hh +++ b/source/blender/blenlib/BLI_vector_set.hh @@ -117,10 +117,10 @@ class VectorSet { uint64_t slot_mask_; /** This is called to hash incoming keys. */ - Hash hash_; + BLI_NO_UNIQUE_ADDRESS Hash hash_; /** This is called to check equality of two keys. */ - IsEqual is_equal_; + BLI_NO_UNIQUE_ADDRESS IsEqual is_equal_; /** The max load factor is 1/2 = 50% by default. */ #define LOAD_FACTOR 1, 2 |