17 template<
typename mesh_t>
18 any_mesh(mesh_t mesh) : base_{new derived<mesh_t>{std::move(mesh)}}
22 any_mesh(
const any_mesh& that);
39 virtual std::unique_ptr<base> clone()
const = 0;
44 template<
typename mesh_t>
45 class derived :
public base
48 explicit derived(mesh_t mesh) : mesh_(
std::move(mesh))
52 std::unique_ptr<base> clone()
const override
54 return std::unique_ptr<base>{
new derived{mesh_}};
57 any_generator<triangle_t> triangles()
const override
59 return mesh_.triangles();
62 any_generator<mesh_vertex_t> vertices()
const override
64 return mesh_.vertices();
70 std::unique_ptr<base> base_;