std::vector
has the interesting property of allowing to be used with incomplete types to a small
degree. However, many legacy (and not-so-legacy) code bases use it in ways which are not allowed
by the standard, and which do start breaking with C++20. In this article I’ll explain the
limitations, a mistake I’ve seen several times now and why this starts breaking now.