Skip to content

No MPL, no variantdata, stepper concepts

This MR gets rid of boost::mpl:

  • Reimplement type generation for FittableMeasurement using boost::hana. This also effectively switches that type away from boost::variant to std::variant.
  • Reimplement action / abort list introspection using boost::hana
  • Drop type erasure for Grid and InterpolatedBFieldMap. The templating now bubbles through to the stepper. Setup becomes little more complicated, but we're not going through TE at all anymore, which should be a performance benefit. Effectively removes any signature requirements on field mappers and the grid, even though they were not enforced even before, since that only happened when using the concepts with TE.
  • Removes the VariantData code. It's unreasonable to pay the performance cost for boost::mpl there, when we're not actively using it.

This includes @fklimpel's changes from !518 (merged), but reimplements the static assertions on steppers using a custom setup not using boost (see TypeTraits.hpp and StepperConcept.hpp). These concepts are only enforced at compile and are not (and cannot be) used for type erasure.

All in all, this decreases build time by about 10% and memory usage by about 9%.

mem_time

I would propose we close !518 (merged) and merge this MR instead.

EDIT: !528 (merged) dominates compile time over this one, but I still think we'd benefit from this.

Edited by Paul Gessinger-Befurt

Merge request reports