promote_scalar now working with arbitrary include order with static functor-like structs