This came up when I was asking around about what the proper way was to: - Allocate aligned storage for a buffer pool/page cache - Then create pointers to "Page" structs inside of the storage memory area I thought something like this might do: struct buffer_pool { alignas(PAGE_SIZE) std::byte storage[NUM_PAGES * PAGE_SIZE]; page* pages = new (storage) page[NUM_PAGES]; } Someone told me that this was a valid solution but not to do it, because it wouldn't function properly on GCC They gave this as a reproduction: https://godbolt.org/z/EhzM37Gzh I'm not experienced enough with C++ to grok the connection between this repro and my code, but I figured I'd post it on the mailing list in case it was useful for others/might get fixed in the future =) They said it had to do with "handling of lifetimes of implicit-lifetime types"