Что возвращает sizeof() при применении к std::array?

Скажите, пожалуйста, что Стандарт C++ говорит про следующий код:

std::array<char, 10> arr;
memset(arr.data(), 0, sizeof(arr));

У меня есть некоторые сомнения в том, что:

sizeof(arr) == sizeof(char) * arr.size()

Ответы (1 шт):

Автор решения: Harry

Правильнее

std::array<char, 10> arr;
memset(arr.data(), 0, arr.size()*sizeof(char));

Потому что хотя реально в ряде реализаций sizeof(arr) и соответствует размеру памяти для массива (например, в VC++ 2019), это, насколько мне известно, не гарантируется... А вот о arr.size() говорится прямо и недвусмысленно.

→ Ссылка