Change
https://github.com/FirebirdSQL/firebird/commit/ea6549f2f66b46c28b3932e4d56294f80ef77d22 breaks the build in many gcc and clang compilers. The cause is an attempt to use the
std::find_if function from
<algorithm>.
To use standard algorithms, iterators must meet a number of requirements, such as having an
iterator_category,
value_type, and so on. Unfortunately,
GenericMap doesn't have definitions that can be used in
iterator_traits, and therefore, in standard library algorithms. Of our classes, only
Array defines iterator types. However, even there, they are defined in a deprecated form. Ideally, we should either bring our container iterators into compliance with the standard library requirements or abandon the standard algorithms when working with them.
P.S. It would be a good idea to start using concepts in some places.