@@ -48,10 +48,10 @@ We also use its return type to determine the type of the vertex: `vertex_t<G>`.
4848
4949### ` vertex_id `
5050
51- The CPO ` vertex_id(g, ui) ` is used obtain the _ id_ of the vertex, given the iterator.
51+ The CPO ` vertex_id(g, ui) ` is used obtain the _ id_ of the vertex, given the iterator. < br >
5252We also use its return type to determine the type of the vertex id: ` vertex_id_t<G> ` .
5353
54- #### Coustomization
54+ #### Customization
5555
5656 1 . Returns ` ui->vertex_id(g) ` , if this expression is valid and its type is ` std::move_constructible ` .
5757 2 . Returns ` vertex_id(g, ui) ` , if this expression is valid and its type is ` std::move_constructible ` .
@@ -67,22 +67,78 @@ We also use its return type to determine the type of the vertex id: `vertex_id_t
6767
6868TODO ` find_vertex(g, uid) `
6969
70+
7071### ` edges(g, u) `
7172
73+ The CPO ` edges(g, u) ` is used to obtain the sequence of outgoing edges for a vertex
74+ denoted by reference ` u ` . <br >
75+ We also use its return type to determine the type of the edge type: ` edge_t<G> ` .
76+
77+ #### Customization
78+
79+ 1 . Returns ` u.edges(g) ` , if this expression is valid and its type is ` std::move_constructible ` .
80+ 2 . Returns ` edges(g, u) ` , if this expression is valid and its type is ` std::move_constructible ` .
81+ 3 . ` u ` , if ` G ` is a user-defined type and type ` vertex_t<G> ` is `std::ranges::forward_range;
82+
83+
7284### ` edges(g, uid) `
7385
86+ The CPO ` edges(g, uid) ` is used to obtain the sequence of outgoing edges for a vertex
87+ denoted by _ id_ ` uid ` .
88+
89+ #### Customization
90+
91+ 1 . Returns ` edges(g, uid) ` , if this expression is valid and its type is ` std::move_constructible ` .
92+ 2 . Returns ` *find_vertex(g, uid) ` , if
93+ * ` vertex_t<G> ` is ` std::ranges::forward_range ` , and
94+ * expression ` find_vertex(g, uid) ` is valid and its type is ` std::move_constructible ` .
95+
96+
7497### ` num_edges(g) `
7598
99+ TODO
100+
101+
76102### ` target_id(g, uv) `
77103
104+ The CPO ` target_id(g, uv) ` is used to obtain the _ id_ of the target vertex of edge ` uv ` .
105+
106+ #### Customization
107+
108+ 1 . Returns ` uv.target_id(g) ` , if this expression is valid and its type is ` std::move_constructible ` .
109+ 2 . Returns ` target_id(g, uv) ` , if this expression is valid and its type is ` std::move_constructible ` .
110+ 3 . Returns ` uv ` , if
111+ * ` G ` is ` std::ranges::forward_range ` , and
112+ * ` std::ranges::range_value_t<G> ` is ` std::ranges::forward_range ` , and
113+ * ` std::ranges::range_value_t<std::ranges::range_value_t<G>> ` is ` std::integral ` .
114+ 4 . Returns ` get<0>(uv) ` , if
115+ * ` G ` is ` std::ranges::forward_range ` , and
116+ * ` std::ranges::range_value_t<G> ` is ` std::ranges::forward_range ` , and
117+ * ` std::ranges::range_value_t<std::ranges::range_value_t<G>> ` is <code ><em >tuple-like</em ></code >,
118+ * ` std::tuple_element_t<0, std::ranges::range_value_t<std::ranges::range_value_t<G>>> ` is ` std::integral ` .
119+
120+
78121### ` target_id(e) `
79122
80123### ` source_id(g, uv) `
81124
82125### ` source_id(e) `
83126
127+
84128### ` target(g, uv) `
85129
130+ CPO ` target(g, uv) ` is used to access the target vertex of a given edge ` uv ` .
131+
132+ #### Customization
133+
134+ 1 . Returns ` target(g, uv) ` , if this expression is valid and its type is ` std::move_constructible ` .
135+ 2 . Returns ` *find_vertex(g, target_id(g, uv)) ` , if
136+
137+ * ` vertex_range_t<G> ` is a ` std::ranges::random_access_range ` , and
138+ * ` find_vertex(g, uid) ` is valid and its type is ` std::move_constructible ` , and
139+ * ` target_id(g, uv) ` is valid and its type is ` std::integral ` .
140+
141+
86142### ` source(g, uv) `
87143
88144### ` find_vertex_edge(g, u, vid) `
0 commit comments