C28753
предупреждение C28753: использование неопределенного порядка оценки параметров
C/C++ позволяет компилятору создавать код для оценки фактических параметров в любом порядке, а компиляторы x86 и Arm, как правило, выбирают разные порядки. Код, зависящий от определенного порядка, может вести себя по-разному на разных платформах.
Распространенная ошибка заключается в использовании интеллектуальных указателей, где оператор address-of & имеет побочные эффекты в таких вызовах:
sp->Foo(&sp);
Вызовы оператора доступа к членам и> оператора& могут выполняться в любом порядке. Таким образом, побочные эффекты от оператора& могут возникать до или после вызова оператора -> . Это предупреждение находит эти ошибки вызовы, чтобы предотвратить различное поведение на разных платформах.
Примере
В следующем примере кода показано, как создать это предупреждение.
sp->Foo(&sp)
Следующий пример кода позволяет избежать этого предупреждения.
SmartPtr spTemp;
sp->Foo(&spTemp);
sp = spTemp;