Я пытался Google, но напрасно.
В C++ массивы хранятся в непрерывной памяти.
Это означает, что если у вас есть элемент x
и вы знаете, что он внутри массива и что он не первый элемент массива, тогда предыдущий
*(&x - 1)
т.е. элемент, на который указывает адрес x
после вычитания 1 (обратите внимание, что это работает, поскольку арифметика указателя в C++ рассматривает размер элемента, поэтому &x - 1
не указывает на байт раньше, а на элемент before).
operator&
, мы должны использоватьstd::addressof
.operator&
вероятно, также будет иметь в коде#define else
так что в любом случае будут проблемы :-)