#pragma once #include #include #include namespace OpenMesh { template using IteratorFunction = Iter (OpenMesh::PolyConnectivity::*)(CenterEntityHandle) const; template BeginFunc, IteratorFunction EndFunc, typename Adaptor> auto operator|(const OpenMesh::PolyConnectivity::CirculatorRange & range, Adaptor && adaptor) { return std::views::iota(range.begin(), range.end()) | std::forward(adaptor); } namespace Helpers { template typename PropertyT> struct Property : public PropertyT { template explicit Property(OpenMesh::BaseKernel * kernel, Params &&... params) { kernel->add_property(*this, std::forward(params)...); } }; } }