What an implementation of a particle in Beluga should provide.
P is a Particle type if given:
p of P.cp of P.The following is satisfied:
beluga::state(cp) is a valid expression and returns the particle state.beluga::weight(cp) is a valid expression and returns the particle weight.beluga::state(p) is a valid expression and returns a mutable reference to the particle state.beluga::weight(p) is a valid expression and returns a mutable reference to the particle weight.Both beluga::state and beluga::weight are customization point objects. Users have two customization alternatives: