#pragma once #include struct plane_group_t { plane_group_t() = default; template plane_group_t(InputIt first, InputIt last) { internal_planes = { plane_t{1, 0, 0, 0}, plane_t{0, 1, 0, 0}, plane_t{0, 0, 1, 0}, plane_t{0, 0, 0, 1} }; planes.insert(planes.end(), std::make_move_iterator(first), std::make_move_iterator(last)); } template plane_group_t(Container&& container) : plane_group_t(std::begin(std::forward(container)), std::end(std::forward(container))) { } auto get_plane(uint32_t index) const noexcept { if (index < 4) return internal_planes[index]; return planes[index - 4]; } std::array internal_planes{}; stl_vector_mp planes{}; };