\begin{ccRefConcept}{Segment} The concept of a {\em Segment} is defined by a set of requirements on the provision of certain types in a \ccc{Kernel} that already provides the concept of a \ccc{Point}. \ccRefines \ccc{Point} \ccNestedType{Object_list}{shall contain at least \ccc{Segment_tag}.} \ccNestedType{Type::type}{shall be CopyConstructible.} \ccNestedType{Functor>::type}{[Optional] A default converter it available to \ccc{Kernel_converter}, but may be unsuitable if your Segment type is too original.} \ccNestedType{Functor::type}{shall provide \ccc{Type::type operator()(Type::type, int k)const} which returns the $k$th ($0$ or $1$) extremity of the segment.} \ccNestedType{Functor>::type}{shall provide:\\ \ccc{Type::type operator()(Type::type,Type::type)const} which constructs a segment from its extremities;\\ \ccc{Type::type operator()(piecewise_construct_t, tuple u, tuple v)const} which calls \ccc{Functor>::type} on the content of each tuple to create the extremities. } \end{ccRefConcept}