useStlAlgorithm

// clang-tidy's google-explicit-constructor matches our style better.
noExplicitConstructor

// We often use `size`, `begin`, `end` as variable names which shadow free
// functions. Functions are still accessible using `scipp::size`, etc.
// Mix-ups are very unlikely because they mostly fail to compile.
// Compiler warnings appear to match our usage better.
shadowFunction

// Iterators are meant to abstract away the underlying container.
// This check warns, e.g., about using iterators of std::span and
// std::array together. This should be perfectly fine.
mismatchingContainerExpression

// Flags use of `false` or `true` as template parameters (seems to be a
// bug in cppcheck's parser). The warning would be nice to have but it
// would need too many inline suppressions at this point.
comparisonOfBoolWithInvalidComparator

// Does not work with references in structured bindings (2021-11-16):
// https://trac.cppcheck.net/ticket/10368
// Should be covered by gcc's maybe-uninitialized warning.
unassignedVariable

// Covered by gcc's unused-variable warning.
// Flags unused parts of structured bindings as opposed to gcc.
unusedVariable

// More thoroughly covered by clang-tidy.
useInitializationList

// Warns about the `State` parameter in benchmarks.
// We have no control over constness in this case.
// Generally, non-const callbacks should be fine.
constParameterCallback

// This is a style issue, we allow redefining members in subclasses.
duplInheritedMember

// This finds some performance issues.
// It is unclear how relevant they are at this point.
passedByValue

// A lot of false-positives in test fixtures.
unusedStructMember
