Пытаюсь компилировать код, отлаженный под компиляторами MS VC++ 15.xx, компиляторами из новых студий (19.xx). В коде есть несколько классов, содержащих volatile-переменные. На них выдаются предупреждения:
warning C5220: 'Class::Var': a non-static data member with a volatile qualified type no longer implies that compiler generated copy/move constructors and copy/move assignment operators are not trivial... to simplify migration, consider the temporary use of /Wv:18 flag with the version of the compiler with which you used to build without warnings
Этим классам вообще не нужны ни конструкторы копирования/перемещения, ни операторы присваивания. Объявил фиктивные конструктор и оператор присваивания, как я это всегда делал для классов с const-членами — не помогло.
От этого можно как-то избавиться, кроме как принудительно запретить эти предупреждения? Вообще, что за "нетривиальность" оно имеет в виду?
В плане доступа/синхронизации с этими переменными все корректно, я просто хочу быть уверен, что компилятор нигде не сунет переменную в регистр, и не уберет операции чтения из памяти.