A model of this concept must define the nested Curve_2 type, which represents a general planar curve that is not necessarily x-monotone and is not necessarily connected. Such curves are eventually subdivided into x-monotone subcurves and isolated points (represented by the Point_2 and X_monotone_curve_2 types, defined in the basic traits concept).
A model of the concept ArrangementTraits_2 that handles arbitrary curves, which are always x-monotone, such as a traits class that handles linear curves may define the nested types Curve_2 and X_monotone_curve_2 to be of equivalent types. Moreover, defining them as of equivalent types is advantageous, as it enables a generic simple implementation of the nested Functor Make_x_monotone_2.
On the other hand, a model of the ArrangementTraits_2 concept that handles arbitrary curves, which may be not x-monotone must define the Curve_2 and X_monotone_curve_2 nested types to be of different types to allow proper dispatching of the free functions that accept such curves, such as intsert().
ArrangementTraits_2::Curve_2 | |
models the concept ArrTraits::Curve_2.
|
ArrangementTraits_2::Make_x_monotone_2 | |
models the concept ArrTraits::MakeXMonotone_2.
|
Make_x_monotone_2 | traits.make_x_monotone_2_object () const |