Является ли sizeof (T) == sizeof (int)?
Я изучал проект стандарта и не могу найти то, что искал.
Если у меня есть тип стандартного макета
struct T {
unsigned handle;
};
Тогда я знаю, чтоre,interpret_cast<unsigned*>(&t) == &t.handle
для некоторыхT t;
Цель состоит в том, чтобы создатьvector<T> v
и передать&v[0]
на функцию C, которая ожидает указатель на массив целых чисел без знака.
Итак, стандарт определяетsizeof(T) == sizeof(unsigned)
и означает ли это, что массивT
будет иметь такой же макет, как массивunsigned
?
Покаэтот вопрос затрагивает очень похожую тему, я спрашиваю о конкретном случае, когда и элемент данных, и класс являются стандартным макетом, а элемент данных является фундаментальным типом.
Я прочитал некоторые параграфы, которые, кажется, намекают на то, чтоможет быть это могло бы быть правдой, но ничто, что ударяет гвоздь в голову. Например:
§ 9.2.17
Два типа стандартной структуры макета (раздел 9) совместимы с макетом, если они имеют одинаковое количество элементов не статических данных, а соответствующие элементы нестатических данных (в порядке объявления) имеют типы, совместимые с макетом
Это не совсем то, что я ищу, я не думаю.