This comes out of my comments on D99041. The general strategy is:
- Split out __search into <__functional_search>, so <algorithm> can include <__functional_search> instead of <functional>
- Split out the lifted operators into <__functional_ops>, so many headers (notably <valarray>, <numeric>, and <set>) can include <__functional_ops> instead of <functional>
Does it make sense to combine these two headers?