7namespace dr::__detail {
9auto tuple_transform(
auto tuple,
auto op) {
10 auto transform = [op](
auto &&...items) {
11 return std::make_tuple(op(items)...);
13 return std::apply(transform, tuple);
16auto tie_transform(
auto tuple,
auto op) {
17 auto transform = [op]<
typename... Items>(Items &&...items) {
18 return std::tie(op(std::forward<Items>(items))...);
20 return std::apply(transform, tuple);
23auto tuple_foreach(
auto tuple,
auto op) {
24 auto transform = [op](
auto... items) { (op(items), ...); };
25 std::apply(transform, tuple);