|
Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
|
C++20 concepts for the protocol shared by graph algorithms. More...
Go to the source code of this file.
Namespaces | |
| namespace | Aleph |
| Main namespace for Aleph-w library functions. | |
| namespace | Aleph::graph_concepts_detail |
Concepts | |
| concept | Aleph::graph_concepts_detail::AlephGraphImpl |
Unqualified form of AlephGraph, applied to a cv/ref-free type. | |
| concept | Aleph::AlephGraph |
| A graph usable by the graph algorithms. | |
| concept | Aleph::NodeFilter |
A node filter (SN) for graph GT. | |
| concept | Aleph::ArcFilter |
An arc filter (SA) for graph GT. | |
| concept | Aleph::ArcDistance |
An arc distance (Distance) for graph GT. | |
| concept | Aleph::FlowNetwork |
| A flow network usable by the max-flow and min-cost algorithms. | |
Typedefs | |
| template<class GT > | |
| using | Aleph::graph_concepts_detail::graph_t = std::remove_cvref_t< GT > |
GT with cv-qualifiers and references removed. | |
C++20 concepts for the protocol shared by graph algorithms.
The graph algorithms have always relied on an implicit protocol for their template parameters. These concepts write down its minimal, common part:
List_Graph, Array_Graph, List_SGraph, their Digraph<> wrappers, Net_Graph and derivatives).SN/SA filters, invoked the way Filter_Iterator invokes them.Distance functor: a Distance_Type and a call on an arc. Zero_Distance/Max_Distance/set_zero are not part of it: no algorithm relies on them generally.Each concept states a condition every algorithm that constrains with it needs anyway, so it never rejects a type the algorithm would accept; an algorithm may still need more than its concept states.
GraphCommon or types used while a graph class is still being defined (iterators, default filters, Dft_Dist): the graph type is incomplete there.Definition in file ah-graph-concepts.H.