  We present a generic C++ design to perform efficient and exact geometric
computations using lazy evaluations. Exact geometric computations are critical
for the robustness of geometric algorithms. Their efficiency is also critical
for most applications, hence the need for delaying the exact computations at
run time until they are actually needed. Our approach is generic and extensible
in the sense that it is possible to make it a library which users can extend to
their own geometric objects or primitives. It involves techniques such as
generic functor adaptors, dynamic polymorphism, reference counting for the
management of directed acyclic graphs and exception handling for detecting
cases where exact computations are needed. It also relies on multiple precision
arithmetic as well as interval arithmetic. We apply our approach to the whole
geometric kernel of CGAL.
