Versions Compared

Key

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

...

  • implement a function call operator that does not mutate state related to the function object's identity, such as nonstatic data members or captured values, or,
  • wrap the predicate function object in a std::reference_wrapper<T> (or an equivalent solution).

Note that marking the function call operator as const is beneficial, but insufficient because data members with the mutable storage class specifier may still be modified within a const member function.

Noncompliant Code Example (Functor)

...

This program produces the following results, using gcc 4.8.1 with libstdc++:

Contains: 0 1 2 3 4 5 6 7 8 9 
Contains: 0 1 3 4 6 7 8 9

...