Out of curiosity, I had a look at the LLVM implementation of std::array, and noticed that it is a struct. Most other STL containers I've looked at (vector, queue, map) are classes. And it appears in the standard as a struct so is intentional.
Anyone know why this might be?
Technically, it's neither a struct nor a class -- it's a template.
std::array
is required to be an aggregate
. To make a long story short, this ends up meaning that it can't have anything private -- so it might as well be written as a struct
(which defaults to making everything public) instead of a class
, (which defaults to making everything private).
If you wanted to you could write it as a class
anyway:
template <...>
class array {
public:
// ...
But you need to make everything public anyway, so you might as well use a struct
that does that by default.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With