Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Compliant Solution (std::reference_wrapper)

This compliant solution wraps uses std::ref to wrap the predicate in a std::reference_wrapper<T> object, ensuring that copies of the wrapper object all refer to the same underlying predicate object.

...

Using a predicate function object that contains state can produce unexpected values.

Rule

Severity

Likelihood

Remediation Cost

Priority

Level

CTR58-CPP

Low

Likely

High

P3

L3

Automated Detection

Tool

Version

Checker

Description

PRQA QA-C++ 
Helix QAC

Include Page
Helix QAC_V
Helix QAC

Include PagePRQA QA-C++

_V

PRQA QA-

C++

_V

3225,

 3226,

C++3226, C++3227, C++3228, C++3229, C++3230, C++3231, C++3232,

3233, 3234  

C++3233, C++3234


Parasoft C/C++test

Include Page
Parasoft_V
Parasoft_V

CERT_CPP-CTR58-a

Make predicates const pure functions

Polyspace Bug Finder

Include Page
Polyspace Bug Finder_V
Polyspace Bug Finder_V

CERT C++: CTR58-CPPChecks for function object that modifies its state (rule fully covered).

Related Vulnerabilities

Search for vulnerabilities resulting from the violation of this rule on the CERT website.

Bibliography

[ISO/IEC 14882-2014]

Subclause 25.1, "General"

[Meyers 2001]Item 39, "Make Predicates Pure Functions"

...


...

Image Modified Image Modified Image Modified