@@ -21,40 +21,38 @@ concept c_edge_directional_tag = c_one_of<T, directed_t, undirected_t>;
2121
2222} // namespace type_traits
2323
24- template <type_traits::c_edge_directional_tag EdgeTag , type_traits::c_properties Properties>
24+ template <type_traits::c_edge_directional_tag DirectionalTag , type_traits::c_properties Properties>
2525class edge_descriptor ;
2626
2727namespace type_traits {
2828
29- template <typename T>
30- inline constexpr bool is_directed_v = false ;
31-
32- template <c_instantiation_of<edge_descriptor> EdgeType>
33- inline constexpr bool is_directed_v<EdgeType> =
34- std::is_same_v<typename EdgeType::directional_tag, directed_t >;
29+ // TODO: align docs
3530
36- template <typename T>
37- inline constexpr bool is_undirected_v = false ;
31+ template <typename E>
32+ concept c_directed_edge =
33+ c_instantiation_of<E, edge_descriptor>
34+ and std::same_as<typename E::directional_tag, directed_t >;
3835
39- template <c_instantiation_of<edge_descriptor> EdgeType>
40- inline constexpr bool is_undirected_v<EdgeType> =
41- std::is_same_v<typename EdgeType::directional_tag, undirected_t >;
36+ template <typename E>
37+ concept c_undirected_edge =
38+ c_instantiation_of<E, edge_descriptor>
39+ and std::same_as<typename E::directional_tag, undirected_t >;
4240
4341} // namespace type_traits
4442
4543struct directed_t {
4644 using type = std::type_identity_t <directed_t >;
4745
4846 template <type_traits::c_instantiation_of<edge_descriptor> EdgeType>
49- requires (type_traits::is_directed_v <EdgeType>)
47+ requires (type_traits::c_directed_edge <EdgeType>)
5048 [[nodiscard]] gl_attr_force_inline static bool is_incident_from (
5149 const EdgeType& edge, const types::id_type vertex_id
5250 ) {
5351 return vertex_id == edge._vertices .first ;
5452 }
5553
5654 template <type_traits::c_instantiation_of<edge_descriptor> EdgeType>
57- requires (type_traits::is_directed_v <EdgeType>)
55+ requires (type_traits::c_directed_edge <EdgeType>)
5856 [[nodiscard]] gl_attr_force_inline static bool is_incident_to (
5957 const EdgeType& edge, const types::id_type vertex_id
6058 ) {
@@ -66,15 +64,15 @@ struct undirected_t {
6664 using type = std::type_identity_t <undirected_t >;
6765
6866 template <type_traits::c_instantiation_of<edge_descriptor> EdgeType>
69- requires (type_traits::is_undirected_v <EdgeType>)
67+ requires (type_traits::c_undirected_edge <EdgeType>)
7068 [[nodiscard]] gl_attr_force_inline static bool is_incident_from (
7169 const EdgeType& edge, const types::id_type vertex_id
7270 ) {
7371 return edge.is_incident_with (vertex_id);
7472 }
7573
7674 template <type_traits::c_instantiation_of<edge_descriptor> EdgeType>
77- requires (type_traits::is_undirected_v <EdgeType>)
75+ requires (type_traits::c_undirected_edge <EdgeType>)
7876 [[nodiscard]] gl_attr_force_inline static bool is_incident_to (
7977 const EdgeType& edge, const types::id_type vertex_id
8078 ) {
0 commit comments