Use lambdas and pack expansion to reduce template instantiations in action_dispatch
This change produces significant reductions in compiler memory use (4.15GB to 2.81GB in my graph_assortativity
testcase) and compiler runtime (180m to 168m overall, 206s to 188s in the testcase) by:
- Performing type iteration with parameter pack expansion where possible
- Testing the stored
boost::any
types sequentially instead of all at once (M+N instead of M*N operations)
I see no significant change in runtime with this approach, though it should in theory be an improvement.