\begin{ccRefConcept}{R}

The representation class parameter of the kernel types is denoted by \ccc{R}.
In terms of concepts, whenever \ccc{R} is used with a class \ccc{Kernel_object_d<R>},
a model for \ccc{R} must provide a nested type \ccc{R::Kernel_object_d} that conicides
with \ccc{Kernel_object_d<R>}. The \cgal\ classes \ccc{Cartesian}, \ccc{Homogeneous},
\ccc{Simple_cartesian} and \ccc{Simple_homogeneous} fulfill this requirement.
The requirement is slightly 
stronger than the requirements for \ccc{Kernel}, since a type identity between 
\ccc{Kernel::Kernel_object_d} and \ccc{Kernel_object_d<Kernel>} is not required for
a \ccc{Kernel}. The class \ccc{Kernel_object_d<Kernel>} need not even be instantiable.

\ccTypes

\ccNestedType{FT}{a number type that is a model for \ccc{FieldNumberType}}
\ccGlue
\ccNestedType{RT}{a number type that is a model for \ccc{RingNumberType}}

\ccHasModels
\ccc{Cartesian<FieldNumberType>}, \ccc{Homogeneous<RingNumberType>}, 
\ccc{Simple_cartesian<FieldNumberType>},
\ccc{Simple_homogeneous<RingNumberType>}

\ccSeeAlso
\ccc{Point_2<R>} \\
\ccc{Vector_2<R>} \\
\ccc{Direction_2<R>} \\
\ccc{Line_2<R>} \\
\ccc{Ray_2<R>} \\
\ccc{Segment_2<R>} \\
\ccc{Triangle_2<R>} \\
\ccc{Iso_rectangle_2<R>} \\
\ccc{Aff_transformation_2<R>} \\
\ccc{Circle_2<R>} \\
\ccc{Point_3<R>} \\
\ccc{Vector_3<R>} \\
\ccc{Direction_3<R>} \\
\ccc{Iso_cuboid_3<R>} \\
\ccc{Line_3<R>} \\
\ccc{Ray_3<R>} \\
\ccc{Sphere_3<R>} \\
\ccc{Segment_3<R>} \\
\ccc{Plane_3<R>} \\
\ccc{Triangle_3<R>} \\
\ccc{Tetrahedron_3<R>} \\
\ccc{Aff_transformation_3<R>} \\
\ccc{Point_d<R>}
\end{ccRefConcept}

