V1115. Function annotated with the 'pure' attribute has side effects.

Анализатор обнаружил функцию, проаннотированную как чистая, которая таковой не является.

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

Функция является чистой, если соответствует следующим требованиям:

Наиболее частые случаи нарушения чистоты функций:

Рассмотрим пример нечистой функции, но проаннотированной как чистая:

[[gnu::pure]] void foo() 
{
  int *x = new int;
  ....
}

Функция 'foo' проаннотирована в коде атрибутом 'gnu::pure'. При этом функция выделяет динамическую память в программе и нарушает требование об отсутствии побочных эффектов.

Для исправления необходимо либо убрать атрибут 'pure', либо исправить функцию следующим образом:

[[gnu::pure]] void foo()
{
  int x;
  ....
}