17 template<
typename path_t>
18 any_path(path_t path) : base_{new derived<path_t>{std::move(path)}}
22 any_path(
const any_path& that);
39 virtual std::unique_ptr<base> clone()
const = 0;
44 template<
typename path_t>
45 class derived :
public base
48 explicit derived(path_t path) : path_(
std::move(path))
52 std::unique_ptr<base> clone()
const override
54 return std::unique_ptr<base>{
new derived{path_}};
57 any_generator<edge_t> edges()
const override
62 any_generator<path_vertex_t> vertices()
const override
64 return path_.vertices();
70 std::unique_ptr<base> base_;