﻿# V539\. Iterators are passed as arguments to 'Foo' function\. Consider inspecting the expression\.

Анализатор обнаружил код, выполняющий действия над контейнерами, который с большой вероятностью содержит ошибку\. Рекомендуется внимательно проверить данный фрагмент кода\. 

Рассмотрим несколько примеров, демонстрирующих ситуации, когда будет выдано данное предупреждение:

Пример 1\.

```cpp
void X(std::vector<int> &X, std::vector<int> &Y)
{
  std::for_each (X.begin(), X.end(), SetValue);
  std::for_each (Y.begin(), X.end(), SetValue);
}
```

В функции происходит заполнение двух массивов некими значениями\. Из\-за опечатки при втором вызове функции "std::for\_each" ей передаются итераторы от различных контейнеров, что приведет к ошибке на этапе исполнения программы\. Корректный код:

```cpp
std::for_each (X.begin(), X.end(), SetValue);
std::for_each (Y.begin(), Y.end(), SetValue);
```

Пример 2\.

```cpp
std::includes(a.begin(), a.end(), a.begin(), a.end());
```

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

```cpp
std::includes(a.begin(), a.end(), b.begin(), b.end());
```