@@ -60,6 +60,26 @@ struct axis_space_iterator
6060 using UpdateSignature = void (std::size_t index,
6161 std::vector<axis_index> &indices);
6262
63+ axis_space_iterator (
64+ std::size_t axes_count,
65+ std::size_t iter_count,
66+ std::function<axis_space_iterator::AdvanceSignature> &&advance,
67+ std::function<axis_space_iterator::UpdateSignature> &&update)
68+ : m_number_of_axes(axes_count)
69+ , m_iteration_size(iter_count)
70+ , m_advance(std::move(advance))
71+ , m_update(std::move(update))
72+ {}
73+
74+ axis_space_iterator (
75+ std::size_t axes_count,
76+ std::size_t iter_count,
77+ std::function<axis_space_iterator::UpdateSignature> &&update)
78+ : m_number_of_axes(axes_count)
79+ , m_iteration_size(iter_count)
80+ , m_update(std::move(update))
81+ {}
82+
6383 [[nodiscard]] bool inc ()
6484 {
6585 return this ->m_advance (m_current_index, m_iteration_size);
@@ -89,24 +109,18 @@ inline axis_space_iterator make_space_iterator(
89109 std::function<axis_space_iterator::AdvanceSignature> &&advance,
90110 std::function<axis_space_iterator::UpdateSignature> &&update)
91111{
92- axis_space_iterator iter;
93- iter.m_number_of_axes = axes_count;
94- iter.m_iteration_size = iter_count;
95- iter.m_advance = std::move (advance);
96- iter.m_update = std::move (update);
97- return iter;
112+ return axis_space_iterator (axes_count,
113+ iter_count,
114+ std::move (advance),
115+ std::move (update));
98116}
99117
100118inline axis_space_iterator make_space_iterator (
101119 std::size_t axes_count,
102120 std::size_t iter_count,
103121 std::function<axis_space_iterator::UpdateSignature> &&update)
104122{
105- axis_space_iterator iter;
106- iter.m_number_of_axes = axes_count;
107- iter.m_iteration_size = iter_count;
108- iter.m_update = std::move (update);
109- return iter;
123+ return axis_space_iterator (axes_count, iter_count, std::move (update));
110124}
111125
112126} // namespace detail
0 commit comments