Определено ли вычисление смещений указателей между элементами композиции, не являющимися массивами?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Определено ли вычисление смещений указателей между элементами композиции, не являющимися массивами?

Сообщение Anonymous »

Я понимаю причину, по которой expr.add#4.2 ограничивает + и - указателями, нацеленными на элементы одного и того же массива, что было объяснено в нескольких комментариях к моему вопросу относительно класса указателя смещения. Однако то же самое можно сделать, если и указатель, и указатель плюс целевые объекты смещения находятся в одной и той же (вложенной) композиции, а не обязательно в массиве. Если бы эти различия могли быть какими угодно, макрос offsetof был бы бессмысленным.
Пример, демонстрирующий аналогию offsetof:

Код: Выделить всё

#include 
#include 

struct Inner
{
int i1;
float f;
bool b;
int i2;
};

struct Outer
{
int i1;
char c;
int i2;
Inner inner;
double d;
};

int main(int argc, char* argv[])
{
Outer outer;
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/78429504/is-the-calculation-of-pointer-offsets-between-non-array-composition-members-defi[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»