Рассмотрим следующий тип:
struct S
{
char v;
};
Учитывая массив const S
, можно ли стандартным образом интерпретировать его как массив const char
, элементы которого соответствуют значению члена v
для каждого из исходных элементов массива, и наоборот? Например:
const S a1[] = { {'a'}, {'4'}, {'2'}, {'\0'} };
const char* a2 = reinterpret_cast< const char* >(a1);
for (int i = 0; i < 4; ++i)
std::cout << std::boolalpha << (a1[i].v == a2[i]) << ' ';
Является ли приведенный выше код выше и будет ли он печатать true true true true
? Если нет, есть ли другой способ достижения этого?
Очевидно, что можно создать новый массив и инициализировать его с помощью элемента v
каждого элемента исходного массива, но вся идея состоит в том, чтобы избежать создания нового массива.