49 requires std::constructible_from<T, osc::Variant&&>
55 template<
typename T, std::ranges::forward_range R, std::invocable<T> Consumer>
57 std::constructible_from<T, osc::Variant&&> and
61 const OpenSim::Component& component,
63 Consumer&& consumer)
const
67 consumer(to<T>(extractor(state)));
71 template<
typename T, std::ranges::forward_range R>
73 std::constructible_from<T, osc::Variant&&> and
76 std::vector<T>
slurpValues(
const OpenSim::Component& component,
const R& states)
const
79 if constexpr (std::ranges::sized_range<R>) {
80 rv.reserve(std::ranges::size(states));
82 getValues<T>(component, states, [&rv](T value) { rv.push_back(std::move(value)); });