Various improvement of Functor framework implementation
- drop backwards compatible code which allowed compilation with C++17; now require at least C++20
- constrain template arguments with concepts
- replace
enable_if
SFINAE tricks withrequires
- drop the internal (and expensive to compile!)
prepared
wrapper which adds some overloads to the call operator, and instead use a lambda which forwards to a dedicated, overloadedinvoke
function which does the wrapping - generalize
Flatten
to work with any range-of-ranges (not just vector-of-vector) - streamline
Filter
functor implementation - improve
Tuplet
implementation - streamline
FunctorArg
parsing - improve
ParticlePropertyUser
functor -- no longer needs to be template, instead use avariant
to represent the two allowed representations of its state - drop some redundant
deref_if_ptr
hacks - prefer
COUNT_IF(predicate)
overSIZE_OF @ FILTER(predicate)
goes together with DaVinci!1190 (merged)
Edited by Gerhard Raven