diff --git a/src/OpenMesh/Core/Mesh/PolyMeshT.hh b/src/OpenMesh/Core/Mesh/PolyMeshT.hh index 8e120c55..06ae35b0 100644 --- a/src/OpenMesh/Core/Mesh/PolyMeshT.hh +++ b/src/OpenMesh/Core/Mesh/PolyMeshT.hh @@ -66,7 +66,6 @@ namespace OpenMesh { - //== CLASS DEFINITION ========================================================= @@ -493,57 +492,53 @@ public: inline void split(EdgeHandle _eh, VertexHandle _vh) { Kernel::split_edge(_eh, _vh); } - /** - * @brief Cast a mesh with different but identical traits into each other. - * - * Example: - * @code{.cpp} - * struct TriTraits1 : public OpenMesh::DefaultTraits { - * typedef Vec3d Point; - * }; - * struct TriTraits2 : public OpenMesh::DefaultTraits { - * typedef Vec3d Point; - * }; - * struct TriTraits3 : public OpenMesh::DefaultTraits { - * typedef Vec3f Point; - * }; - * - * TriMesh_ArrayKernelT a; - * TriMesh_ArrayKernelT &b = mesh_cast&>(a); // OK - * TriMesh_ArrayKernelT &c = mesh_cast&>(a); // ERROR - * @endcode - * - * @see MeshCast - * - * @param rhs - * @return - */ - template - friend - LHS mesh_cast(PolyMeshT &rhs) { - return MeshCast::cast(rhs); - } - - template - friend - LHS mesh_cast(PolyMeshT *rhs) { - return MeshCast::cast(rhs); - } - - template - friend - const LHS mesh_cast(const PolyMeshT &rhs) { - return MeshCast::cast(rhs); - } - - template - friend - const LHS mesh_cast(const PolyMeshT *rhs) { - return MeshCast::cast(rhs); - } - }; +/** + * @brief Cast a mesh with different but identical traits into each other. + * + * Example: + * @code{.cpp} + * struct TriTraits1 : public OpenMesh::DefaultTraits { + * typedef Vec3d Point; + * }; + * struct TriTraits2 : public OpenMesh::DefaultTraits { + * typedef Vec3d Point; + * }; + * struct TriTraits3 : public OpenMesh::DefaultTraits { + * typedef Vec3f Point; + * }; + * + * TriMesh_ArrayKernelT a; + * TriMesh_ArrayKernelT &b = mesh_cast&>(a); // OK + * TriMesh_ArrayKernelT &c = mesh_cast&>(a); // ERROR + * @endcode + * + * @see MeshCast + * + * @param rhs + * @return + */ +template +LHS mesh_cast(PolyMeshT &rhs) { + return MeshCast&>::cast(rhs); +} + +template +LHS mesh_cast(PolyMeshT *rhs) { + return MeshCast*>::cast(rhs); +} + +template +const LHS mesh_cast(const PolyMeshT &rhs) { + return MeshCast&>::cast(rhs); +} + +template +const LHS mesh_cast(const PolyMeshT *rhs) { + return MeshCast*>::cast(rhs); +} + //============================================================================= } // namespace OpenMesh