HasAdjacentVertices concept is satisfied only if a Element class provides the types and member functions specified in this concept. These types and member functions allow to access to an vcl::comp::AdjacentVertices component of a given element.
More...
template<typename T>
T&& obj,
typename RemoveRef<T>::AdjacentVertexType v,
typename RemoveRef<T>::AdjacentVertexIterator it,
typename RemoveRef<T>::ConstAdjacentVertexIterator cIt,
typename RemoveRef<T>::ConstAdjacentVertexIndexIterator cIIt,
typename RemoveRef<T>::AdjacentVertexType* vP,
const typename RemoveRef<T>::AdjacentVertexType* cVP,
std::vector<typename RemoveRef<T>::AdjacentVertexType*> vec) {
typename RemoveRef<T>::AdjacentVertexType;
typename RemoveRef<T>::AdjacentVertexIterator;
typename RemoveRef<T>::ConstAdjacentVertexIterator;
typename RemoveRef<T>::ConstAdjacentVertexIndexIterator;
{ obj.adjVerticesNumber() } -> std::same_as<uint>;
{
obj.adjVertex(
uint()) } -> std::convertible_to<
decltype(
cVP)>;
{
obj.adjVertexIndex(uint()) } -> std::same_as<uint>;
{ obj.adjVertexMod(int()) } -> std::convertible_to<decltype(cVP)>;
{ obj.adjVertexIndexMod(uint()) } -> std::same_as<uint>;
{ obj.containsAdjVertex(&v) } -> std::same_as<bool>;
{ obj.containsAdjVertex(uint()) } -> std::same_as<bool>;
{ obj.indexOfAdjVertex(&v) } -> std::same_as<uint>;
{ obj.indexOfAdjVertex(uint()) } -> std::same_as<uint>;
{ obj.adjVertexBegin() } -> InputIterator<decltype(cVP)>;
{ obj.adjVertexEnd() } -> InputIterator<decltype(cVP)>;
{ obj.adjVertexIndexBegin() } -> InputIterator<uint>;
{ obj.adjVertexIndexEnd() } -> InputIterator<uint>;
{ obj.adjVertices() } -> InputRange<decltype(cVP)>;
{ obj.adjVertexIndices() } -> InputRange<uint>;
requires IsConst<T> || requires {
{ obj.adjVertex(uint()) } -> std::same_as<decltype(vP)>;
{ obj.adjVertexMod(int()) } -> std::same_as<decltype(vP)>;
{ obj.setAdjVertex(uint(), &v) } -> std::same_as<void>;
{ obj.setAdjVertex(uint(), uint()) } -> std::same_as<void>;
{ obj.setAdjVertex(it, &v) } -> std::same_as<void>;
{ obj.setAdjVertex(it, uint()) } -> std::same_as<void>;
{ obj.setAdjVertex(cIt, &v) } -> std::same_as<void>;
{ obj.setAdjVertex(cIt, uint()) } -> std::same_as<void>;
{ obj.setAdjVertex(cIIt, &v) } -> std::same_as<void>;
{ obj.setAdjVertex(cIIt, uint()) } -> std::same_as<void>;
{ obj.setAdjVertexMod(int(), &v) } -> std::same_as<void>;
{ obj.setAdjVertexMod(int(), uint()) } -> std::same_as<void>;
{ obj.setAdjVertices(vec) } -> std::same_as<void>;
{ obj.adjVertexBegin() } -> InputIterator<decltype(vP)>;
{ obj.adjVertexEnd() } -> InputIterator<decltype(vP)>;
{ obj.adjVertices() } -> InputRange<decltype(vP)>;
};
}
A class representing a line segment in n-dimensional space. The class is parameterized by a PointConc...
Definition segment.h:43
HasAdjacentVertices concept is satisfied only if a Element class provides the types and member functi...
Definition adjacent_vertices.h:52
HasAdjacentVertices concept is satisfied only if a Element class provides the types and member functions specified in this concept. These types and member functions allow to access to an vcl::comp::AdjacentVertices component of a given element.
Note that this concept does not discriminate between the Horizontal AdjacentVertices component and the vertical OptionalAdjacentVertices component, therefore it does not guarantee that a template Element type that satisfies this concept provides AdjacentVertices component at runtime (it is guaranteed only that the proper member functions are available at compile time).