﻿# V3536\. AUTOSAR\. A pointer/reference parameter in a function should be declared as pointer/reference to const if the corresponding object was not modified\.

Данное диагностическое правило основано на руководстве [AUTOSAR](https://www.autosar.org/) \(AUTomotive Open System ARchitecture\) по разработке программного обеспечения\.

Анализатор обнаружил, что объект передается в функцию через указатель или ссылку, но не модифицируется в теле функции\. Это может свидетельствовать о наличии ошибки\. Также в случае, если такой аргумент функции действительно не изменяется, это делает сигнатуру функции неточной\. Добавление константности объекту предотвращает потенциальные ошибки и делает определение функции более наглядным\.

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

```cpp
size_t StringEval(std::string &str)
{
  return str.size();
}
```



Здесь переменная 'str' используется только для чтения, хотя она и передается по неконстантной ссылке\. Явная константность в сигнатуре функции позволила бы с первого взгляда понять, что функция не изменяет объект, а также предотвратить потенциальные ошибки при изменении самой функции\.



Корректный вариант кода:



```cpp
size_t StringEval(const std::string &str)
{
  return str.size();
}
```