+/// Stats is a generic N-dimensional array used to store various statistics.
+/// The first template T parameter is the base type of the array, the W parameter
+/// is the weight applied to the bonuses when we update values with the << operator,
+/// the D parameter limits the range of updates (range is [-W * D, W * D]), and
+/// the last parameters (Size and Sizes) encode the dimensions of the array.
+template <typename T, int W, int D, int Size, int... Sizes>
+struct Stats : public std::array<Stats<T, W, D, Sizes...>, Size>
+{
+ T* get() { return this->at(0).get(); }