﻿# V2019\. Cast should not remove 'volatile' qualifier from the type that is pointed to by a pointer or a reference\.

Данное диагностическое правило добавлено по просьбе пользователей\.

Анализатор обнаружил ситуацию с удалением 'volatile'\-квалификатора\. Доступ к объекту, объявленному с квалификатором 'volatile', через указатель/ссылку на не\-'volatile' тип ведет к неопределенному поведению\.

Пример кода, на который анализатор выдаст предупреждение:

```cpp
int foo(int &value)
{
  while (value)
  {
    // do some stuff...
  }

  return 0;
}

int main()
{
  volatile int value = 1;
  return foo((int &) value);
}
```

Другой пример кода, на который анализатор выдаст предупреждение:

```cpp
#include <utility>

int foo()
{
  int x = 30;
  volatile int y = 203;
  
  using std::swap;
  swap(x, const_cast<int &>(y)); // <=

  return x;
}
```