gcc дает мне недопустимое значение lvalue в ошибках присваивания для:
-2[(size_t *)new] = 0;
Если изменить код на следующий, он исчезнет:
((size_t *)new)[-2] = 0;
но насколько я могу судить, оба на 100% эквивалентны в C. gcc не имеет проблем с использованием первого в ненулевых выражениях.Это просто ошибка в gcc?Я протестировал его с несколькими версиями и получил те же результаты.