Czy rozmiar std :: array jest zdefiniowany przez standard

W C ++ 11std::array jest zdefiniowany, aby mieć ciągłą pamięć i wydajność, która nie jest gorsza niż tablica, ale nie mogę zdecydować, czy różne wymagania standardu implikują, że std :: array ma taki sam rozmiar i układ pamięci jak normalna tablica. Możesz na to liczyćsizeof(std::array<int,N>) == sizeof(int)*N czy jest to specyficzne wdrożenie?

W szczególności, czy to gwarantuje, że będzie działać tak, jak tego oczekujesz:

std::vector< std::array<int, N> > x(M);
typedef (*ArrayPointer)[N];
ArrayPointer y = (ArrayPointer) &x[0][0];
// use y like normal multidimensional array

Działa w dwóch kompilatorach, których próbowałem (GNU i Intel). Ponadto wszystkie dokumenty innych firm, które mogłem znaleźć (lubię to), stwierdza, że ​​std :: array jest tak samo wydajny pamięci jak zwykła tablica, co w połączeniu z wymaganiem ciągłym oznaczałoby, że musi mieć identyczny układ pamięci. Jednak nie mogę znaleźć tego wymogu w standardzie.

questionAnswers(1)

yourAnswerToTheQuestion